ありがとうございます!AWS Cloudformation Lambda S3 - 循環依存性
だから私は下のこのCloudformationテンプレートを作成し、循環依存エラーを持っている..私は、エラーの原因を知っているが、私が達成しようとしている何のために解決策を考えることはできません。..
どのそうです。
機能コードで、私が使用する必要がある2つのバケット
のための2つの環境変数が2つのS3バケット、ファイル入力用とファイル出力のための1つを作成しているラムダ関数を作成します。
オブジェクトが第一バケットここ
に追加されたラムダ関数を呼び出すトリガーを作成しますが、私のコードです:
"lambda": {
"Type": "AWS::Lambda::Function",
"DependsOn": [
"s3accessrole",
"s3rolepolicies",
"bucket1"
],
"Properties": {
"Code": {
"S3Bucket": "resource-bucket",
"S3Key": "filepath/function.zip"
},
"Role": {
"Fn::GetAtt": [
"s3accessrole",
"Arn"
]
},
"Timeout": 60,
"Handler": "function.handler",
"Runtime": "nodejs6.10",
"MemorySize": 1024,
"Environment": {
"Variables": {
"bucket1": {
"Ref": "bucket1"
},
"bucket2": {
"Ref": "bucket2"
}
}
}
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "XXXX"
}
}
},
"bucket1": {
"Type": "AWS::S3::Bucket",
"Properties": {
"AccessControl": "Private",
"LifecycleConfiguration": {
"Rules": [
{
"ExpirationInDays": "1",
"Id": "delete images/",
"Status": "Enabled"
}
]
},
"VersioningConfiguration": {
"Status": "Suspended"
},
"NotificationConfiguration": {
"LambdaConfigurations": [
{
"Event": "s3:ObjectCreated:*",
"Function": {
"Ref": "lambda"
}
}
]
}
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "XXXX"
}
}
},
"lambdaperm": {
"Type": "AWS::Lambda::Permission",
"Properties": {
"Action": "lambda:InvokeFunction",
"FunctionName": {
"Ref": "lambda"
},
"Principal": "s3.amazonaws.com",
"SourceAccount": {
"Ref": "AWS::AccountId"
},
"SourceArn": {
"Fn::Join": [
":",
[
"arn",
"aws",
"s3",
"",
"",
{
"Ref": "bucket1"
}
]
]
}
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "XXXX"
}
}
},
"bucket2": {
"Type": "AWS::S3::Bucket",
"Properties": {
"AccessControl": "Private",
"LifecycleConfiguration": {
"Rules": [
{
"ExpirationInDays": "1",
"Id": "delete images/",
"Status": "Enabled"
}
]
},
"VersioningConfiguration": {
"Status": "Suspended"
}
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "XXXX"
}
}
}
ラムダコードに2つのバケットの名前が必要なのはなぜですか? 1つを入力として使用し、1つを出力として使用する場合、入力イベントは入力バケットの名前を提供します。したがって、(1)出力バケットの作成、(2)出力バケットへのrefを使用したLambda関数の作成、(3)Lambda関数を指し示すトリガーでの入力バケットの作成を行うことができます。サークルはありません! –