连接到 Cloudformation 生成的 S3bucket 超时
Connection to Cloudformation generated S3bucket times out
我正在尝试解决我的 AWS Cloudformation 模板的问题。我拥有的模板包括一个带有私有子网的 VPC,以及一个允许连接到 S3 存储桶的 VPC 端点。
存储桶本身包括 3 个存储桶,并且我在同一区域中已经提到了几个预先存在的存储桶(在本例中,eu-west-1
)。
我使用 aws-cli 登录私有子网中的 EC2 实例,然后使用 aws-cli 命令访问 S3(例如 sudo aws s3 ls bucketname
)
我的问题是我只能列出该区域中预先存在的存储桶的内容,或者我通过网站手动创建的新存储桶的内容。当我尝试列出 cloudformation 生成的存储桶时,它只是挂起并超时:
[ec2-user@ip-10-44-1-129 ~]$ sudo aws s3 ls testbucket
HTTPSConnectionPool(host='vltestbucketxxx.s3.amazonaws.com', port=443): Max retries exceeded with url: /?delimiter=%2F&prefix=&encoding-type=url (Caused by ConnectTimeoutError(<botocore.awsrequest.AWSHTTPSConnection object at 0x7f2cc0bcf110>, 'Connection to vltestbucketxxx.s3.amazonaws.com timed out. (connect timeout=60)'))
似乎与VPC端点无关(将配置设置为允许一切都没有效果)
{
"Statement": [
{
"Action": "*",
"Effect": "Allow",
"Resource": "*",
"Principal": "*"
}
]
}
访问控制似乎也没有影响它。
{
"Resources": {
"testbucket": {
"Type": "AWS::S3::Bucket",
"Properties": {
"AccessControl": "PublicReadWrite",
"BucketName": "testbucket"
}
}
}
}
存储桶策略似乎也不是问题(我生成的存储桶没有附加任何策略,而且只有 cloudformation 生成的存储桶超时)。在网站上,一个连接的桶和一个超时的桶的配置看起来和我一样。
尝试访问其他区域的存储桶也会超时,但据我了解,cloudformation 在与 VPC 相同的区域生成存储桶,所以不应该这样(该网站还显示存储桶位于同一地区)。
有人知道问题出在哪里吗?
编辑:我可以从 VPC public 子网连接,所以这可能是端点问题?
使用 VPC 端点时,请确保您已将客户端配置为通过 ServiceName
属性(例如,com.amazonaws.eu-west-1.s3
).
要使用 AWS CLI 执行此操作,请设置 AWS_DEFAULT_REGION
environment variable or the --region
command line option,例如 aws s3 ls testbucket --region eu-west-1
。如果您没有明确设置区域,S3 客户端将默认使用全局端点 (s3.amazonaws.com
) 进行请求,这与您的 VPC 端点不匹配。
我正在尝试解决我的 AWS Cloudformation 模板的问题。我拥有的模板包括一个带有私有子网的 VPC,以及一个允许连接到 S3 存储桶的 VPC 端点。
存储桶本身包括 3 个存储桶,并且我在同一区域中已经提到了几个预先存在的存储桶(在本例中,eu-west-1
)。
我使用 aws-cli 登录私有子网中的 EC2 实例,然后使用 aws-cli 命令访问 S3(例如 sudo aws s3 ls bucketname
)
我的问题是我只能列出该区域中预先存在的存储桶的内容,或者我通过网站手动创建的新存储桶的内容。当我尝试列出 cloudformation 生成的存储桶时,它只是挂起并超时:
[ec2-user@ip-10-44-1-129 ~]$ sudo aws s3 ls testbucket
HTTPSConnectionPool(host='vltestbucketxxx.s3.amazonaws.com', port=443): Max retries exceeded with url: /?delimiter=%2F&prefix=&encoding-type=url (Caused by ConnectTimeoutError(<botocore.awsrequest.AWSHTTPSConnection object at 0x7f2cc0bcf110>, 'Connection to vltestbucketxxx.s3.amazonaws.com timed out. (connect timeout=60)'))
似乎与VPC端点无关(将配置设置为允许一切都没有效果)
{
"Statement": [
{
"Action": "*",
"Effect": "Allow",
"Resource": "*",
"Principal": "*"
}
]
}
访问控制似乎也没有影响它。
{
"Resources": {
"testbucket": {
"Type": "AWS::S3::Bucket",
"Properties": {
"AccessControl": "PublicReadWrite",
"BucketName": "testbucket"
}
}
}
}
存储桶策略似乎也不是问题(我生成的存储桶没有附加任何策略,而且只有 cloudformation 生成的存储桶超时)。在网站上,一个连接的桶和一个超时的桶的配置看起来和我一样。
尝试访问其他区域的存储桶也会超时,但据我了解,cloudformation 在与 VPC 相同的区域生成存储桶,所以不应该这样(该网站还显示存储桶位于同一地区)。
有人知道问题出在哪里吗?
编辑:我可以从 VPC public 子网连接,所以这可能是端点问题?
使用 VPC 端点时,请确保您已将客户端配置为通过 ServiceName
属性(例如,com.amazonaws.eu-west-1.s3
).
要使用 AWS CLI 执行此操作,请设置 AWS_DEFAULT_REGION
environment variable or the --region
command line option,例如 aws s3 ls testbucket --region eu-west-1
。如果您没有明确设置区域,S3 客户端将默认使用全局端点 (s3.amazonaws.com
) 进行请求,这与您的 VPC 端点不匹配。