Amazon s3 用于跨帐户访问的Helm s3插件
我使用s3作为掌舵图存储库。我想从不同AWS帐户中的两个独立ec2实例访问/管理此图表。两者都有不同的角色 我使用下面的命令在AWS帐户a中创建一个bucketAmazon s3 用于跨帐户访问的Helm s3插件,amazon-s3,amazon-iam,kubernetes-helm,Amazon S3,Amazon Iam,Kubernetes Helm,我使用s3作为掌舵图存储库。我想从不同AWS帐户中的两个独立ec2实例访问/管理此图表。两者都有不同的角色 我使用下面的命令在AWS帐户a中创建一个bucket aws s3api create-bucket --bucket test15-helm-bucket --region "eu-central-1" --create-bucket-configuration LocationConstraint=eu-central-1 使用以下命令初始化舵图回购 helm s3 init s3:
aws s3api create-bucket --bucket test15-helm-bucket --region "eu-central-1" --create-bucket-configuration LocationConstraint=eu-central-1
使用以下命令初始化舵图回购
helm s3 init s3://test15-helm-bucket/charts
Initialized empty repository at s3://test15-helm-bucket/charts
获取拥有该对象的帐户的规范ID
aws s3api list-objects --bucket test15-helm-bucket --prefix charts
{
"Contents": [
{
"ETag": "\"xxxxxxxxxxxxxx\"",
"LastModified": "xxxxxxxxxxxxxx",
"StorageClass": "STANDARD",
"Size": 69,
"Owner": {
"ID": "ee70xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"Key": "charts/index.yaml"
}
]
}
增加了如下的舵手回购
helm repo add testing s3://test15-helm-bucket/charts
"testing" has been added to your repositories
现在从Account B ec2实例开始,我配置了跨帐户角色以承担附加到Account A ec2实例的角色
.即
然后配置下面的环境变量
export AWS_PROFILE=helm
我运行下面的命令从AWS帐户B中的计算机获取帐户的规范ID,并获得帐户A的规范ID的预期结果
aws s3api list-buckets --query Owner.ID
但是,在这台机器上添加repo的helm命令失败
helm repo add testing s3://test15-helm-bucket/charts
fetch from s3: fetch object from s3: AccessDenied: Access Denied
status code: 403, request id: xxxxxxxxx, host id: xxxxxxxxxxxxxxxxxxxxxxxxxxx
Error: Looks like "s3://test15-helm-bucket/charts" is not a valid chart repository or cannot be reached: plugin "bin/helms3" exited with error
看起来helm s3插件无法在帐户A中扮演角色。但是AWS命令可以
我怎样才能解决这个问题 错误消息仅表示读取访问被拒绝,但是您的API命令仅显示您已授予对bucket的列表访问权限。在没有看到随附的政策之前,无法对该问题进行进一步评论 但是,您也可以尝试配置跨帐户bucket访问,并跳过在实例上配置CLI配置文件
{
“版本”:“2012-10-17”,
“声明”:[
{
“效果”:“允许”,
“委托人”:{
“AWS”:“arn:AWS:iam:::角色/”
},
“行动”:[
“s3:GetObject”,
“s3:PutObject”,
“s3:PutObjectAcl”
],
“资源”:[
“arn:aws:s3::/*”
]
}
]
}
{
“版本”:“2012-10-17”,
“声明”:[
{
“效果”:“允许”,
“行动”:[
“s3:GetObject”,
“s3:PutObject”,
“s3:PutObjectAcl”
],
“资源”:“arn:aws:s3::/*”
}
]
}
您现在应该能够从Account-B读取/写入bucket
aws s3 cp s3://<bucket>/<anobject> .
aws s3 cp s3://。
错误消息仅表示读取访问被拒绝,但您的API命令仅显示您已授予对bucket的列表访问权限。在没有看到随附的政策之前,无法对该问题进行进一步评论
但是,您也可以尝试配置跨帐户bucket访问,并跳过在实例上配置CLI配置文件
{
“版本”:“2012-10-17”,
“声明”:[
{
“效果”:“允许”,
“委托人”:{
“AWS”:“arn:AWS:iam:::角色/”
},
“行动”:[
“s3:GetObject”,
“s3:PutObject”,
“s3:PutObjectAcl”
],
“资源”:[
“arn:aws:s3::/*”
]
}
]
}
{
“版本”:“2012-10-17”,
“声明”:[
{
“效果”:“允许”,
“行动”:[
“s3:GetObject”,
“s3:PutObject”,
“s3:PutObjectAcl”
],
“资源”:“arn:aws:s3::/*”
}
]
}
您现在应该能够从Account-B读取/写入bucket
aws s3 cp s3://<bucket>/<anobject> .
aws s3 cp s3://。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::<AccountABucketName>/*"
}
]
}
aws s3 cp s3://<bucket>/<anobject> .