diff --git a/samtranslator/__init__.py b/samtranslator/__init__.py index bb64aa472..b28097579 100644 --- a/samtranslator/__init__.py +++ b/samtranslator/__init__.py @@ -1 +1 @@ -__version__ = '1.6.1' +__version__ = '1.8.0' diff --git a/samtranslator/policy_templates_data/policy_templates.json b/samtranslator/policy_templates_data/policy_templates.json index 75e88df3e..d65182c17 100644 --- a/samtranslator/policy_templates_data/policy_templates.json +++ b/samtranslator/policy_templates_data/policy_templates.json @@ -962,6 +962,36 @@ ] } }, + "RekognitionFacesManagementPolicy": { + "Description": "Gives permission to add, delete and search faces in a collection", + "Parameters": { + "CollectionId": { + "Description": "ID of the collection" + } + }, + "Definition": { + "Statement": [{ + "Effect": "Allow", + "Action": [ + "rekognition:IndexFaces", + "rekognition:DeleteFaces", + "rekognition:SearchFaces", + "rekognition:SearchFacesByImage", + "rekognition:ListFaces" + ], + "Resource": { + "Fn::Sub": [ + "arn:${AWS::Partition}:rekognition:${AWS::Region}:${AWS::AccountId}:collection/${collectionId}", + { + "collectionId": { + "Ref": "CollectionId" + } + } + ] + } + }] + } + }, "RekognitionFacesPolicy": { "Description": "Gives permission to compare and detect faces and labels", "Parameters": { diff --git a/tests/translator/input/all_policy_templates.yaml b/tests/translator/input/all_policy_templates.yaml index e9da0ab0b..2ddfda706 100644 --- a/tests/translator/input/all_policy_templates.yaml +++ b/tests/translator/input/all_policy_templates.yaml @@ -120,3 +120,6 @@ Resources: PinpointApplicationId: id - RekognitionDetectOnlyPolicy: {} + + - RekognitionFacesManagementPolicy: + CollectionId: collection \ No newline at end of file diff --git a/tests/translator/output/all_policy_templates.json b/tests/translator/output/all_policy_templates.json index 4c9350eaa..bef3cd2d3 100644 --- a/tests/translator/output/all_policy_templates.json +++ b/tests/translator/output/all_policy_templates.json @@ -1003,6 +1003,31 @@ } ] } + }, + { + "PolicyName": "KitchenSinkFunctionRolePolicy40", + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "rekognition:IndexFaces", + "rekognition:DeleteFaces", + "rekognition:SearchFaces", + "rekognition:SearchFacesByImage", + "rekognition:ListFaces" + ], + "Resource": { + "Fn::Sub": [ + "arn:${AWS::Partition}:rekognition:${AWS::Region}:${AWS::AccountId}:collection/${collectionId}", + { + "collectionId": "collection" + } + ] + }, + "Effect": "Allow" + } + ] + } } ], "AssumeRolePolicyDocument": { diff --git a/tests/translator/output/aws-cn/all_policy_templates.json b/tests/translator/output/aws-cn/all_policy_templates.json index eea977c9f..90b44732d 100644 --- a/tests/translator/output/aws-cn/all_policy_templates.json +++ b/tests/translator/output/aws-cn/all_policy_templates.json @@ -1003,6 +1003,31 @@ } ] } + }, + { + "PolicyName": "KitchenSinkFunctionRolePolicy40", + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "rekognition:IndexFaces", + "rekognition:DeleteFaces", + "rekognition:SearchFaces", + "rekognition:SearchFacesByImage", + "rekognition:ListFaces" + ], + "Resource": { + "Fn::Sub": [ + "arn:${AWS::Partition}:rekognition:${AWS::Region}:${AWS::AccountId}:collection/${collectionId}", + { + "collectionId": "collection" + } + ] + }, + "Effect": "Allow" + } + ] + } } ], "AssumeRolePolicyDocument": { diff --git a/tests/translator/output/aws-us-gov/all_policy_templates.json b/tests/translator/output/aws-us-gov/all_policy_templates.json index 7528a6839..d20b4b08d 100644 --- a/tests/translator/output/aws-us-gov/all_policy_templates.json +++ b/tests/translator/output/aws-us-gov/all_policy_templates.json @@ -1004,6 +1004,31 @@ } ] } + }, + { + "PolicyName": "KitchenSinkFunctionRolePolicy40", + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "rekognition:IndexFaces", + "rekognition:DeleteFaces", + "rekognition:SearchFaces", + "rekognition:SearchFacesByImage", + "rekognition:ListFaces" + ], + "Resource": { + "Fn::Sub": [ + "arn:${AWS::Partition}:rekognition:${AWS::Region}:${AWS::AccountId}:collection/${collectionId}", + { + "collectionId": "collection" + } + ] + }, + "Effect": "Allow" + } + ] + } } ], "AssumeRolePolicyDocument": { diff --git a/tests/translator/validator/test_validator.py b/tests/translator/validator/test_validator.py index 4340a3cd9..24462eee7 100644 --- a/tests/translator/validator/test_validator.py +++ b/tests/translator/validator/test_validator.py @@ -4,7 +4,8 @@ from samtranslator.yaml_helper import yaml_parse from samtranslator.validator.validator import SamTemplateValidator -input_folder = 'tests/translator/input' +BASE_PATH = os.path.dirname(__file__) +INPUT_FOLDER = os.path.join(BASE_PATH, os.pardir, 'input') @pytest.mark.parametrize('testcase', [ 'basic_function', @@ -102,7 +103,7 @@ def test_validate_template_success(testcase): ] if testcase in excluded: return - manifest = yaml_parse(open(os.path.join(input_folder, testcase + '.yaml'), 'r')) + manifest = yaml_parse(open(os.path.join(INPUT_FOLDER, testcase + '.yaml'), 'r')) validation_errors = SamTemplateValidator.validate(manifest) has_errors = len(validation_errors) if has_errors: diff --git a/versions/2016-10-31.md b/versions/2016-10-31.md index 497f0d773..9dc883a00 100644 --- a/versions/2016-10-31.md +++ b/versions/2016-10-31.md @@ -103,7 +103,8 @@ Property Name | Type | Description ---|:---:|--- Handler | `string` | **Required.** Function within your code that is called to begin execution. Runtime | `string` | **Required.** The runtime environment. -CodeUri | `string` | [S3 Location Object](#s3-location-object) | **Required.** S3 Uri or location to the function code. The S3 object this Uri references MUST be a [Lambda deployment package](http://docs.aws.amazon.com/lambda/latest/dg/deployment-package-v2.html). +CodeUri | `string` | [S3 Location Object](#s3-location-object) | **Either CodeUri or InlineCode must be specified.** S3 Uri or location to the function code. The S3 object this Uri references MUST be a [Lambda deployment package](http://docs.aws.amazon.com/lambda/latest/dg/deployment-package-v2.html). +InlineCode | `string` | **Either CodeUri or InlineCode must be specified.** The inline code for the lambda. FunctionName | `string` | A name for the function. If you don't specify a name, a unique name will be generated for you. [More Info](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-functionname) Description | `string` | Description of the function. MemorySize | `integer` | Size of the memory allocated per invocation of the function in MB. Defaults to 128.