我在我的模板中创建了一个带有访问密钥的用户:
"MyAccessKey" : {
"Type" : "AWS::IAM::AccessKey",
"Properties" : {
"UserName" : { "Ref" : "User12" }
}
}
我需要在模板的输出中获取访问密钥ID和密钥。 如何做到这一点? 谢谢
我在我的模板中创建了一个带有访问密钥的用户:
"MyAccessKey" : {
"Type" : "AWS::IAM::AccessKey",
"Properties" : {
"UserName" : { "Ref" : "User12" }
}
}
我需要在模板的输出中获取访问密钥ID和密钥。 如何做到这一点? 谢谢
CloudFormation的输出文档指出...
CloudFormation不会删除或混淆您在输出部分中包含的任何信息。我们强烈建议您不要使用此部分输出敏感信息,例如密码或秘密。
一个更安全的选择是创建一个包含用户访问和秘密密钥的AWS::SecretsManager::Secret 资源。
下面是使用此方法利用“bot”用户创建模板的示例...
---
AWSTemplateFormatVersion: 2010-09-09
Description: example bot user
Resources:
Bot:
Type: AWS::IAM::User
Properties:
Path: /bot/
UserName: !Ref AWS::StackName
BotCredentials:
Type: AWS::IAM::AccessKey
Properties:
Status: Active
UserName: !Ref Bot
BotCredentialsStored:
Type: AWS::SecretsManager::Secret
Properties:
Name: !Sub /bot/credentials/${Bot}
SecretString: !Sub '{"ACCESS_KEY":"${BotCredentials}","SECRET_KEY":"${BotCredentials.SecretAccessKey}"}'
可以从 AWS::IAM::AccessKey
资源的 返回值 中获取Access Key ID和Secret Key:
"Outputs" : {
"MyAccessKeyId": {
"Ref" : "MyAccessKey"
},
"MySecretKey": {
"Fn::GetAtt": [ "MyAccessKey", "SecretAccessKey" ]
}
}
AWS::SecretsManager::Secret
而不是通过“Outputs”公开这些值。 - RH BeckerAWS::SecretsManager::Secret
达到这个目的。 - RH Becker