aws-lambda - SubnetIds 和 SecurityGroupIds 的 Lambda 模板失败
问题描述
我的 sam 函数中有以下模板:
Resources:
TagChangedFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: tag_changed_function
Handler: tag_changed/app.lambda_handler
Runtime: python3.8
Policies:
- VPCAccessPolicy: {}
- Statement:
- Sid: EC2DescribeInstancesPolicy
Effect: "Allow"
Action:
- ec2:DescribeInstances
Resource: '*'
VpcConfig:
SubnetIds:
- sg-061328bxxxxx
SecurityGroupIds:
- subnet-03afd77xxxxx
Events:
TagChanged:
Type: CloudWatchEvent
Properties:
Pattern:
source:
- aws.tag
detail-type:
- Tag Change on Resource
(我用 xxxxx 掩盖了模板中的SubnetIds
and SecurityGroupIds
)。
但是当我构建并尝试将我的代码上传到 aws 时,我收到以下错误消息:
2 validation errors detected: Value
'[subnet-061328bxxxxx]' at
'vpcConfig.securityGroupIds' failed to satisfy
constraint: Member must satisfy constraint: [Member must
have length less than or equal to 1024, Member must have
length greater than or equal to 0, Member must satisfy
regular expression pattern: ^sg-[0-9a-z]*$]; Value
'[sg-03afd77xxxxx]' at 'vpcConfig.subnetIds' failed
to satisfy constraint: Member must satisfy constraint:
[Member must have length less than or equal to 1024,
Member must have length greater than or equal to 0,
Member must satisfy regular expression pattern:
^subnet-[0-9a-z]*$] (Service: AWSLambdaInternal; Status
Code: 400; Error Code: ValidationException; Request ID:
641be279-a48f-4249-b0a1-3e221f8bbdf
(再次用 xxxxxx 屏蔽)
据我所见,正则表达式约束得到满足。有人看到模板中有什么问题吗?
如果我删除该VpcConfig
部分,它可以正常上传。
解决方案
您在子网部分提供 sg ID,在 SG 部分提供子网 ID。请尝试以下
Resources:
TagChangedFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: tag_changed_function
Handler: tag_changed/app.lambda_handler
Runtime: python3.8
Policies:
- VPCAccessPolicy: {}
- Statement:
- Sid: EC2DescribeInstancesPolicy
Effect: "Allow"
Action:
- ec2:DescribeInstances
Resource: '*'
VpcConfig:
SubnetIds:
- subnet-03afd77xxxxx
SecurityGroupIds:
- sg-061328bxxxxx
Events:
TagChanged:
Type: CloudWatchEvent
Properties:
Pattern:
source:
- aws.tag
detail-type:
- Tag Change on Resource
推荐阅读
- algorithm - O(n log n) 算法总是优于所有 O(n^2) 算法吗?
- python - UTF-8 编码阻塞控制台打印
- android - 在科尔多瓦禁用 CORS 保护
- visual-studio - 在 VSTS 中组合代码覆盖率结果
- python - 在 Python 中处理具有大量数据的字典
- python - logger 应该是参数还是全局变量?
- reactjs - TypeError withstyles is not a function react export default
- java - StepRequest 带有 StepRequest.STEP_MIN 参数
- linux - 如何让全局安装的节点模块在终端上运行
- java - java中的X.509证书gui程序