python-3.x - 如何等待 CodePipeline 在 Cloudformation 中部署功能
问题描述
我有一个 Cloudformation 模板,我想通过它创建 Aurora(MySQL) 表。但是,它没有内置资源。因此,我决定构建一个自定义资源函数来在创建 DbCluster 时创建表。此外,由于 Cloudformation 也可以创建 CI/CD 管道,因此我准备了如下模板。但是,它会引发错误:
未找到函数:arn:aws:lambda:eu-central-1:xxxxxxxxxxxx:MyFunctionName(服务:AWSLambda;状态代码:404;错误代码:ResourceNotFoundException;请求 ID:...)
显然,只要创建 Pipeline,CustomResource 就会运行。但是我需要等待它的第一次功能部署才能在自定义资源中使用它。认为属性RestartExecutionOnUpdate: true
和AWS::CodePipeline::Pipeline
添加DependsOn
会Custom::RdsBootstrap
有所帮助,但他们没有。
Resources:
# Serverless Aurora DB Cluster
MyDbCluster:
Type: AWS::RDS::DBCluster
...
# Build Project
MyCustomResourceFunctionBuildProject:
Type: AWS::CodeBuild::Project
...
# Pipeline for deploying Custom Resource Function Source Code
MyCustomResourceFunctionPipeline:
Type: AWS::CodePipeline::Pipeline
Properties:
Name: custom-resource-function-pipeline
RestartExecutionOnUpdate: true
Stages:
- Name: Source
...
- Name: Build
...
- Name: Pipeline
...
# Custom Resource Function
RdsBootstrap:
Type: Custom::RdsBootstrap
DependsOn: [MyDbCluster, MyCustomResourceFunctionPipeline]
Version: '1.0'
Properties:
ServiceToken: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:MyFunctionName"
那么,如何让自定义资源不仅仅等待 CodePipeline 创建;还有它的初始部署?
解决方案
推荐阅读
- c# - task.run 和 async 之间的区别
- angular - xplat 您在预期流的位置提供了无效对象。您可以提供 Observable、Promise、Array 或 Iterable
- docker - 如何在 Docker Compose 中连接不同网络中的容器?
- ios - 如何阻止 Swift 在我的 [String] 中注入转义的单引号?
- html - 无法将 index.html 文件链接到另一个文件夹中的 style.css 文件
- php - 为什么在 laravel 的服务容器上使用单例方法?
- python - Selenium 找不到我的 chromedriver.exe,即使它在我的路径中
- php - 如何在 Laravel Eloquent 中正确创建引用同一张表的两个外键的关系?
- java - 带有 Groovy 的 Nifi ExecuteScript:OOM 异常
- java - 从openFrameworks端(ofApp.cpp)向android JAVA发送字符串?