需要以编程方式获取CDN_DISTRIBUTION_ID,以便CloudFront缓存可以在构建后失效,无论其分布如何。
我已经按照预期使cloudfront失效了,但是它需要一个发行ID。由于相同的Yaml代码将用于每个开发人员的单独环境,CI,生产等,因此需要以编程方式获取。 我正在努力弄清楚如何在不通过AWS控制台手动找到它或使用其他语言的变通方法的情况下获取distribution_id。我们希望能够像$ {DISTRUBUTIION_ID}这样的变量来传递它,但是我正在努力弄清楚如何通过yaml进行设置。
- aws cloudfront create-invalidation --distribution-id CDN_DISTRIBUTION_ID --paths "/*"
我已经将ID导入了堆栈,但是不确定如何将其导入到运行时构建规范中。
Outputs:
ClientDistribution:
Description: "ClientDistribution distribution id"
Value: !Ref ClientDistribution
Export:
Name: !Sub "${AWS::StackName}-ClientDistribution"
答案 0 :(得分:0)
一旦部署了堆栈,就可以使用AWS CLI和jq(假设您的问题中显示的是ClientDistribution
输出)来获取您的发行版ID:
aws cloudformation describe-stacks --stack-name <name> | jq '.Stacks[0].Outputs[] | select(.OutputKey=="ClientDistribution").OutputValue'
然后可以使用它来设置变量并继续无效。
答案 1 :(得分:0)
假设您正在寻找使用发行版ID来运行无效并等待其完成(我怀疑这是一个常见的用例),则可以将发行版ID传递给其他命令以简化此操作。
DISTRIBUTION_ID=`aws cloudformation describe-stacks --stack-name <name> | jq -r '.Stacks[0].Outputs[] | select(.OutputKey=="ClientDistribution").OutputValue'` && \
INVALIDATION_ID=`aws cloudfront create-invalidation --distribution-id $DISTRIBUTION_ID --paths "/*" | jq -r .Invalidation.Id` && \
aws cloudfront wait invalidation-completed --distribution-id $DISTRIBUTION_ID --id $INVALIDATION_ID