如何通过aws cli在组织的Cloudfront实例中部署lambda @ edge代码?

时间:2019-04-05 12:22:09

标签: amazon-web-services amazon-s3 aws-lambda amazon-cloudfront

我们的另一个团队在我们的某些AWS存储桶的前面有一个Cloudfront发行版。

我有一些针对lambda @ edge的node.js代码来重写请求。

我的问题是如何使用aws命令行工具将其部署到这些存储桶的Cloudfront中?

我认为,这将需要

  1. 要求角色扮演角色;
  2. 将功能部署到可以使用的位置(而不只是我的帐户);
  3. 创建角色/信任关系;
  4. 在Cloudfront中创建行为;
  5. 并将该功能与Viewer Request事件相关联。

我还没有找到任何连贯的文档或如何执行所有这些操作的示例,更不用说使用aws工具了。

按原样,尽管我可以通过命令行列出s3存储桶内容,但是当我通过网站登录时却看不到Cloudfront或S3存储桶。 (我不确定如何通过命令行访问Cloudfront。)

1 个答案:

答案 0 :(得分:1)

如果您的功能已部署在Lambda中,则应将其添加到CloudFront分布配置的“ LambdaFunctionAssociations”元素中,然后使用update-distribution CLI命令更新配置,例如:

aws cloudfront update-distribution --id C123456789 --distribution-config file://local/path/to/distrib-config.json

id是您的发行版ID

如果要获取当前的CloudFront分配配置,可以执行aws cloudfront get-distribution-config --id C123456789

如果您要首先创建函数,则aws lambda create-function将返回创建的函数ARN以传递到配置中。 https://docs.aws.amazon.com/cli/latest/reference/lambda/create-function.html

当您说“只为我的账户”时,是指一个单独的AWS账户,还是要在与CloudFront分布和S3存储桶相同的AWS账户中使用IAM用户?听起来您的AWS Console用户不同于在aws cli中设置了访问密钥的用户。 aws cloudfront list-distributions将让您通过命令行查看CloudFront。

Link to AWS Dev Guide for programmatic lambda@edge