问题描述
现在我正在学习如何使用 Pulumi 设置由 GCP 存储桶提供服务的网站,但是,我坚持在最后一步公开 IP 地址并将其附加到 LB。除了This load balancer has no frontend configured
我认为 ForwardingRule
是我需要的,但除了 BucketBackend
(请参阅下面的代码和输出)。
有什么关于如何前进的建议吗?
####### WEBSITE ##########
web_bucket = gcp.storage.Bucket('web',project="myproj",cors=[gcp.storage.BucketCorArgs(
max_age_seconds=3600,methods=[
"GET",],origins=["https://myproj.com","https://sandBox.myproj.com"],response_headers=["*"],)],force_destroy=True,location="US",uniform_bucket_level_access=True,website=gcp.storage.BucketWebsiteArgs(
main_page_suffix="index.html",not_found_page="404.html",),)
pulumi.export('web bucket',web_bucket.url)
ssl_certificate = gcp.compute.SSLCertificate("SSLCertificate",name_prefix="certificate-",private_key=(lambda path: open(path).read())("ssl/private.key"),certificate=(lambda path: open(path).read())("ssl/certificate.crt"))
http_health_check = gcp.compute.HttpHealthCheck("httphealthcheck",request_path="/",check_interval_sec=1,timeout_sec=1
)
# Backend Bucket Service
web_backend = gcp.compute.BackendBucket("web-backend",description="Serves website",bucket_name=web_bucket.name,enable_cdn=True
)
# LB Backend hostpath and rules
url_map = gcp.compute.URLMap("urlmap",description="URL mapping",default_service=web_backend.id,host_rules=[gcp.compute.URLMapHostRuleArgs(
hosts=["myproj.io"],path_matcher="allpaths",path_matchers=[gcp.compute.URLMapPathMatcherArgs(
name="allpaths",path_rules=[gcp.compute.URLMapPathMatcherPathRuleArgs(
paths=["/*"],service=web_backend.id,)]
)
# Route to backed (bucket backend)
target_https_proxy = gcp.compute.TargetHttpsProxy("targethttpsproxy",url_map=url_map.id,ssl_certificates=[ssl_certificate.id])
# Forwarding rule for External Network Load Balancing using Backend Services
web_forward = gcp.compute.ForwardingRule("webforward",region="us-central1",port_range="80",backend_service=web_backend.id # this doesn't work
)
Diagnostics:
gcp:compute:ForwardingRule (default):
error: 1 error occurred:
* Error creating ForwardingRule: googleapi: Error 400: Invalid value for field 'resource.backendService': 'https://compute.googleapis.com/compute/beta/projects/myproj/global/backendBuckets/web-backend-576fa1b'. Unexpected resource collection 'backendBuckets'.,invalid
解决方法
我使用了错误的转发规则类。因为LB设置区域转发错误。
# Forwarding rule for External Network Load Balancing using Backend Services
web_forward = gcp.compute.GlobalForwardingRule("webforward",project="myproj",port_range="443",target=nbprod_target_https_proxy.self_link
)