amazon-web-services - 如何将对现有 VPC 的引用传递给 cloudformation 模板?
问题描述
我正在创建一个 cloudformation 模板,资源很少,有几个 lambda 函数,S3 存储桶。请参阅下面的代码,它正在进行中,到目前为止,我有一个 S3 存储桶和一个由 S3 触发的 lamda 函数。我们在我们的团队中定义了我们应该使用的 vpc。我想在该 vpc 下为我的 lambda 函数添加私有子网,并为 s3 存储桶分配公共子网。如何获取 vpc 的引用,并将其传递给我的模板并使用它?示例代码会有所帮助。
AWSTemplateFormatVersion: 2010-09-09
Resources:
# S3 Bucket
S3Bucket:
Type: AWS::S3::Bucket
# Functions
S3-Lambda-trigger:
Type: AWS::Serverless::Function
Properties:
CodeUri: .
Handler: lambda.handler
Description: s3 object creation triggers lambda
Runtime: nodejs12.x
Events:
S3Bucket:
Type: S3
Properties:
Bucket: !Ref S3Bucket
Events: 's3:ObjectCreated:*'
# Permissions
Allow-lamda-invocation-s3:
Type: AWS::Lambda::Permission
Properties:
Action: 'lambda:InvokeFunction'
FunctionName: !Ref S3-Lambda-trigger
Principal: s3.amazonaws.com
SourceArn: !GetAtt S3Bucket.Arn
解决方案
如何获取 vpc 的引用,并将其传递给我的模板并使用它?
一种方法是通过AWS-Specific Parameter Types,特别AWS::EC2::VPC::Id
是在一个Parameters
部分中。
例如:
AWSTemplateFormatVersion: 2010-09-09
Parameters:
VPCId:
Type: AWS::EC2::VPC::Id
Resources:
MySubnet:
Type: AWS::EC2::Subnet
Properties:
# other properties
VpcId: !Ref VPCId
多亏了这一点,在 AWS 控制台中创建堆栈时,您可以选择现有的 VPCId传递给模板。
推荐阅读
- python - 如何计算不同熊猫列中两个日期之间的年数
- chm - 链接到 HelpnDoc 中的特定主题使用 Visual C++ HtmlHelp 编译 CHM
- javascript - Angular5-Ngx-pagination:检查第一页或最后一页
- clojure - 最好的实时通话 quil 功能是什么?
- node.js - dialogflow webhook 实现代码失败
- sql - SQL:如何将值汇总到 ssms 中的类别中
- angular - Angular 4 和 MVC 数据绑定错误
- javascript - 在 redux 中创建选择器不起作用
- python - Azure 应用服务环境不支持扩展
- python - Fabric vs Plumbum:差异、用例、优缺点