fix(AWS IAM): Fix role and policy name resolution

Custom stack name should be used only for CloudFormation stack.

Regression introduced with #7357
This commit is contained in:
Mariusz Nowak 2020-05-07 21:48:27 +02:00 committed by Mariusz Nowak
parent dd9bf9a799
commit 08dc745cbf
3 changed files with 47 additions and 12 deletions

View File

@ -89,7 +89,15 @@ module.exports = {
},
getRoleName() {
return {
'Fn::Join': ['-', [this.getStackName(), { Ref: 'AWS::Region' }, 'lambdaRole']],
'Fn::Join': [
'-',
[
this.provider.serverless.service.service,
this.provider.getStage(),
{ Ref: 'AWS::Region' },
'lambdaRole',
],
],
};
},
getRoleLogicalId() {
@ -99,7 +107,10 @@ module.exports = {
// Policy
getPolicyName() {
return {
'Fn::Join': ['-', [this.getStackName(), 'lambda']],
'Fn::Join': [
'-',
[this.provider.serverless.service.service, this.provider.getStage(), 'lambda'],
],
};
},

View File

@ -111,7 +111,15 @@ describe('#naming()', () => {
it('uses the service name, stage, and region to generate a role name', () => {
serverless.service.service = 'myService';
expect(sdk.naming.getRoleName()).to.eql({
'Fn::Join': ['-', [sdk.naming.getStackName(), { Ref: 'AWS::Region' }, 'lambdaRole']],
'Fn::Join': [
'-',
[
serverless.service.service,
sdk.naming.provider.getStage(),
{ Ref: 'AWS::Region' },
'lambdaRole',
],
],
});
});
});
@ -126,7 +134,7 @@ describe('#naming()', () => {
it('should use the stage and service name', () => {
serverless.service.service = 'myService';
expect(sdk.naming.getPolicyName()).to.eql({
'Fn::Join': ['-', [sdk.naming.getStackName(), 'lambda']],
'Fn::Join': ['-', [serverless.service.service, sdk.naming.provider.getStage(), 'lambda']],
});
});
});

View File

@ -76,7 +76,10 @@ describe('#mergeIamTemplates()', () => {
Policies: [
{
PolicyName: {
'Fn::Join': ['-', [awsPackage.provider.naming.getStackName(), 'lambda']],
'Fn::Join': [
'-',
[awsPackage.serverless.service.service, awsPackage.provider.getStage(), 'lambda'],
],
},
PolicyDocument: {
Version: '2012-10-17',
@ -111,7 +114,8 @@ describe('#mergeIamTemplates()', () => {
'Fn::Join': [
'-',
[
awsPackage.provider.naming.getStackName(),
awsPackage.serverless.service.service,
awsPackage.provider.getStage(),
{
Ref: 'AWS::Region',
},
@ -158,7 +162,10 @@ describe('#mergeIamTemplates()', () => {
Policies: [
{
PolicyName: {
'Fn::Join': ['-', [awsPackage.provider.naming.getStackName(), 'lambda']],
'Fn::Join': [
'-',
[awsPackage.serverless.service.service, awsPackage.provider.getStage(), 'lambda'],
],
},
PolicyDocument: {
Version: '2012-10-17',
@ -193,7 +200,8 @@ describe('#mergeIamTemplates()', () => {
'Fn::Join': [
'-',
[
awsPackage.provider.naming.getStackName(),
awsPackage.serverless.service.service,
awsPackage.provider.getStage(),
{
Ref: 'AWS::Region',
},
@ -243,7 +251,10 @@ describe('#mergeIamTemplates()', () => {
Policies: [
{
PolicyName: {
'Fn::Join': ['-', [awsPackage.provider.naming.getStackName(), 'lambda']],
'Fn::Join': [
'-',
[awsPackage.serverless.service.service, awsPackage.provider.getStage(), 'lambda'],
],
},
PolicyDocument: {
Version: '2012-10-17',
@ -278,7 +289,8 @@ describe('#mergeIamTemplates()', () => {
'Fn::Join': [
'-',
[
awsPackage.provider.naming.getStackName(),
awsPackage.serverless.service.service,
awsPackage.provider.getStage(),
{
Ref: 'AWS::Region',
},
@ -334,7 +346,10 @@ describe('#mergeIamTemplates()', () => {
Policies: [
{
PolicyName: {
'Fn::Join': ['-', [awsPackage.provider.naming.getStackName(), 'lambda']],
'Fn::Join': [
'-',
[awsPackage.serverless.service.service, awsPackage.provider.getStage(), 'lambda'],
],
},
PolicyDocument: {
Version: '2012-10-17',
@ -379,7 +394,8 @@ describe('#mergeIamTemplates()', () => {
'Fn::Join': [
'-',
[
awsPackage.provider.naming.getStackName(),
awsPackage.serverless.service.service,
awsPackage.provider.getStage(),
{
Ref: 'AWS::Region',
},