Skip to content

Commit 3f59c38

Browse files
authored
Merge pull request #375 from hassaku63/feature/xray-iam-permission
fix: added iam permission for x-ray
2 parents a355dcd + c987642 commit 3f59c38

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

lib/deploy/stepFunctions/compileIamRole.js

+7
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,13 @@ module.exports = {
429429
});
430430
}
431431

432+
if (stateMachineObj.tracingConfig) {
433+
iamPermissions.push({
434+
action: 'xray:PutTraceSegments,xray:PutTelemetryRecords,xray:GetSamplingRules,xray:GetSamplingTargets',
435+
resource: '*',
436+
});
437+
}
438+
432439
iamPermissions = consolidatePermissionsByAction(iamPermissions);
433440
iamPermissions = consolidatePermissionsByResource(iamPermissions);
434441
const iamStatements = getIamStatements(iamPermissions);

lib/deploy/stepFunctions/compileIamRole.test.js

+38
Original file line numberDiff line numberDiff line change
@@ -1902,6 +1902,44 @@ describe('#compileIamRole', () => {
19021902
]);
19031903
});
19041904

1905+
it('should give X-Ray permissions', () => {
1906+
serverless.service.stepFunctions = {
1907+
stateMachines: {
1908+
myStateMachine1: {
1909+
id: 'StateMachine1',
1910+
tracingConfig: {
1911+
enabled: true,
1912+
},
1913+
definition: {
1914+
StartAt: 'A',
1915+
States: {
1916+
A: {
1917+
Type: 'Task',
1918+
Resource: 'arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:hello',
1919+
End: true,
1920+
},
1921+
},
1922+
},
1923+
},
1924+
},
1925+
};
1926+
1927+
serverlessStepFunctions.compileIamRole();
1928+
const statements = serverlessStepFunctions.serverless.service
1929+
.provider.compiledCloudFormationTemplate.Resources.StateMachine1Role
1930+
.Properties.Policies[0].PolicyDocument.Statement;
1931+
1932+
const tracingPermissions = statements.filter(s => s.Action.includes('xray:PutTraceSegments'));
1933+
expect(tracingPermissions).to.have.lengthOf(1);
1934+
expect(tracingPermissions[0].Resource).to.equal('*');
1935+
expect(tracingPermissions[0].Action).to.deep.equal([
1936+
'xray:PutTraceSegments',
1937+
'xray:PutTelemetryRecords',
1938+
'xray:GetSamplingRules',
1939+
'xray:GetSamplingTargets',
1940+
]);
1941+
});
1942+
19051943
it('should support variable FunctionName', () => {
19061944
serverless.service.stepFunctions = {
19071945
stateMachines: {

0 commit comments

Comments
 (0)