如何使用Zappa在多个AWS账户之间切换

时间:2018-01-08 18:31:59

标签: aws-lambda zappa

我正在尝试如何在持续交付环境中将lambda部署到不同的AWS账户。目前我仍然坚持这一点。你能告诉我一个关于这个的线索吗?作为AWS CLI的一个示例,我们可以定义需要使用的配置文件。

例如:aws s3 ls --profile account2

在AWS配置文件中,我们按如下方式定义配置文件。

[default]

aws_access_key_id = XXXXXXXXXXXXXXXXXX

aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

[account2]

aws_access_key_id = XXXXXXXXXXXXXXXXXX

aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

我们可以在zappa部署中使用相同的方法吗?

非常感谢解决此问题的任何线索。

2 个答案:

答案 0 :(得分:1)

有一个选项可以指定个人资料名称,你试过吗?

        "profile_name": "your-profile-name", // AWS profile credentials to use. Default 'default'. Removing this setting will use the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables instead.

https://github.com/Miserlou/Zappa/blob/b12bc67aac00b1302a7f9b18444a51f21deac46a/README.md

答案 1 :(得分:1)

您可以使用Zappa的设置定义自己使用的配置文件:

"profile_name": "your-profile-name", // AWS profile credentials to use. Default 'default'. Removing this setting will use the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables instead.

但是在您的CI中,您首先必须创建AWS配置文件,并使用您的配置文件从CI的Web界面中设置的环境变量填充它。

CircleCI (与TravisCI相同)我正在为mislavcimpersak个人资料执行此操作:

mkdir -p ~/.aws
echo -e "[mislavcimpersak]" >> ~/.aws/credentials
echo -e "aws_access_key_id = "$AWS_ACCESS_KEY_ID >> ~/.aws/credentials
echo -e "aws_secret_access_key = "$AWS_SECRET_ACCESS_KEY >> ~/.aws/credentials

我的仓库中提供了完整的 CircleCI 配置文件:

https://github.com/mislavcimpersak/xkcd-excuse-generator/blob/master/.circleci/config.yml#L58-L60

还完成了 TravisCI 配置文件:

https://github.com/mislavcimpersak/xkcd-excuse-generator/blob/feature/travis-ci/.travis.yml#L25-L29

另外,正如Zappa的文档所述:

  

删除此设置将使用AWS_ACCESS_KEY_ID和   而是AWS_SECRET_ACCESS_KEY环境变量

因此,您可以从 zappa_settings.json 中删除"profile_name": "default",并在CI的网络界面中设置AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY。 Zappa应该能够使用它们。