У меня есть рабочая производственная среда с несколькими Lambda, развернутыми из моего P C с использованием AWS SAM.
Я хочу перевести свою лямбду в Cloud9 и отладить оттуда, но ...
Некоторые функции хорошо импортируются, и я могу запустить отладчик, в то время как другие даже не отображаются после импорта , Это заставляет меня думать, что может быть проблема с конфигурацией, которая не нравится Cloud9.
Я возьму довольно простую лямбду, называемую uploaddirect, и это выглядит так:
AWSTemplateFormatVersion : '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: add docs directly from s3
Parameters:
Environment:
Type: String
Default: staging
DocumentMetadataBucketName:
Type: String
DocumentSourceBucketName:
Type: String
DocumentMetadataBucketArn:
Type: String
DocumentSourceBucketArn:
Type: String
Resources:
UploaddirectFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: !Sub leopro-uploaddirect-function-${Environment}
Handler: uploaddirect.handler
Runtime: nodejs10.x
Timeout: 300
Role: !GetAtt UploaddirectExecutionRole.Arn
Environment:
Variables:
DOCUMENT_METADATA_BUCKET: !Ref DocumentMetadataBucketName
DOCUMENT_SOURCE_BUCKET: !Ref DocumentSourceBucketName
CodeUri: .
UploaddirectExecutionRole:
Type: AWS::IAM::Role
Properties:
RoleName: !Sub leopro-uploaddirect-exec-role-${Environment}
ManagedPolicyArns:
- "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
Policies:
-
PolicyName: !Sub leopro-uploaddirect-access-s3-${Environment}
PolicyDocument:
Version: "2012-10-17"
Statement:
-
Effect: "Allow"
Action:
- "s3:GetObject"
- "s3:PutObject"
Resource: 'arn:aws:s3:::*/*'
Statement:
-
Effect: "Allow"
Action:
- "s3:*"
Resource: '*'
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
-
Effect: "Allow"
Principal:
Service:
- "lambda.amazonaws.com"
Action:
- "sts:AssumeRole"
UploaddirectBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: !Sub leopro-uploaddirect-dropbox-bucket-${Environment}
NotificationConfiguration:
LambdaConfigurations:
-
Event: 's3:ObjectCreated:*'
Function: !GetAtt UploaddirectFunction.Arn
UploaddirectBucketPolicy:
Type: AWS::S3::BucketPolicy
Properties:
Bucket: !Ref UploaddirectBucket
PolicyDocument:
Statement:
-
Action:
- "s3:GetObject"
Effect: "Allow"
Resource: !Sub "arn:aws:s3:::leopro-uploaddirect-dropbox-bucket-${Environment}/*"
Principal: "*"
InvokeFromS3Permission:
Type: AWS::Lambda::Permission
Properties:
FunctionName: !GetAtt UploaddirectFunction.Arn
Action: "lambda:InvokeFunction"
Principal: "s3.amazonaws.com"
SourceArn: !Join [ "", [ "arn:aws:s3:::", !Sub "leopro-uploaddirect-dropbox-bucket-${Environment}" ] ]
Я перепробовал множество вещей, включая изменение имени функции, повторное развертывание, очистку кеша, перезапуск cloud9, удаление папок ...
Есть идеи?