#amazon-web-services #amazon-s3 #amazon-cloudformation
#amazon-web-services #amazon-s3 #aws-cloudformation
Вопрос:
Я собирался получить доступ к корзине s3 для zip-файла.
Когда я использую приведенный ниже код, он может получить доступ к корзине, потому что он использует корневой каталог корзины.
«S3Bucket»: { «Ref»: «HandlerCodeS3Bucket» },
когда я хочу получить доступ к папке слоев в том же сегменте, я использую параметры HandlerCodeS3BucketLayer.
Но это показывает ошибку ниже.
1 validation error detected: Value 'admin-sourcecode/layers' at 'content.s3Bucket' failed to satisfy constraint: Member must satisfy regular expression pattern: ^[0-9A-Za-z.-_]*(?<!.)$ (Service: AWSLambdaInternal; Status Code: 400; Error Code: ValidationException; Request ID: xxx)
{
"AWSTemplateFormatVersion": "2010-09-09",
"Parameters": {
"HandlerCodeS3Bucket": {
"Type": "String",
"Default": "admin-sourcecode"
},
"HandlerCodeS3BucketLayer": {
"Type": "String",
"Default": "admin-sourcecode/layers"
}
},
"Resources": {
"MyLayer": {
"Type": "AWS::Lambda::LayerVersion",
"Properties": {
"CompatibleRuntimes": [
"nodejs12.x"
],
"Content": {
"S3Bucket": {
"Ref": "HandlerCodeS3BucketLayer"
},
"S3Key": "imageUploadLayer.zip"
},
"Description": "My layer",
"LayerName": "imageLayer",
"LicenseInfo": "MIT"
}
}
}
}
Комментарии:
1. Сначала пропустите его через средство проверки yaml и в хорошем редакторе, таком как vscode. Проверьте, что в yaml нет красных волнистых подчеркиваний. Затем проверьте, что назначенная роль IAM имеет права? Или это говорит о том, что ваше условие не удовлетворяет:
Default": "admin-sourcecode/layers"
, так работает ли оно с подстановочной картой*
?
Ответ №1:
Имя корзины не может содержать косых черт:
admin-sourcecode/layers
Возможно, в вашем коде это должно быть:
{
"AWSTemplateFormatVersion": "2010-09-09",
"Parameters": {
"HandlerCodeS3Bucket": {
"Type": "String",
"Default": "admin-sourcecode"
},
"HandlerCodeS3BucketLayer": {
"Type": "String",
"Default": "admin-sourcecode"
}
},
"Resources": {
"MyLayer": {
"Type": "AWS::Lambda::LayerVersion",
"Properties": {
"CompatibleRuntimes": [
"nodejs12.x"
],
"Content": {
"S3Bucket": {
"Ref": "HandlerCodeS3BucketLayer"
},
"S3Key": "layers/imageUploadLayer.zip"
},
"Description": "My layer",
"LayerName": "imageLayer",
"LicenseInfo": "MIT"
}
}
}
}