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.