我按照 AWS 开发者论坛帖子中提到的说明进行操作(现已不再可用)。
政策
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"ssm:GetParametersByPath",
"ssm:GetParameters",
"ssm:GetParameter"
],
"Resource": "arn:aws:ssm:eu-central-1:XXXXXXXXXX:parameter/some-root/*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "ssm:DescribeParameters",
"Resource": "*"
}
]
}
我已将策略附加到角色中的目标账户
当我从源帐户获取参数时,它可以工作,但是我无法从目标帐户访问它们。
C:\Users\my-home>aws ssm get-parameters-by-path --path "/some-root/" --profile aws-acc-src
{
"Parameters": [
{
"Name": "/some-root/dev",
"Type": "SecureString",
"Value": "AQICAHh5z4qygT6rbxBnR/PmJn811vO30kBJNB+JrB1tdKNBeAEHFLSQDpTMsRMc1l0D8lXYAAAAYTBfBgkqhkiG9w0BBwagUjBQAgEAMEsGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQM+Qmz5FoNcESEXabnAgEQgB6MdOlb545EPN61QqA50w7rH3sghmNWvxsLPPneHEA=",
"Version": 1,
"LastModifiedDate": "2020-10-06T16:03:32.637000+03:00",
"ARN": "arn:aws:ssm:eu-central-1:XXXXXXXX:parameter/some-root/dev"
}
]
}
aws ssm get-parameters-by-path --path "/some-root/" --with-decryption --profile aws-acc-src
{
"Parameters": [
{
"Name": "/some-root/dev",
"Type": "SecureString",
"Value": "foo",
"Version": 1,
"LastModifiedDate": "2020-10-06T16:03:32.637000+03:00",
"ARN": "arn:aws:ssm:eu-central-1:XXXXXXXX:parameter/some-root/dev"
}
]
}
aws ssm get-parameters-by-path --path "/some-root/" --with-decryption --profile aws-acc-target
{
"Parameters": []
}
看起来,参数存储不支持跨账户访问。或者,您可以使用密钥管理器在不同的 AWS 账户之间共享密钥。
我建议使用 CloudFormation 堆栈集在所有帐户中创建参数。这是一种将其分配到帐户和区域并在所有帐户和区域之间同步应用和维护价值的简单方法。
我还会通过 AWS Support 提出功能请求(我会自己做)。对该功能的请求越多,未来实现该功能的可能性就越大。
更新[2024/02]
现在可以在帐户之间共享 SSM 参数存储
现在,您可以通过与需要访问的其他帐户共享参数来维护配置数据的单一事实来源,而不是在帐户之间手动复制和同步数据。