Вам не нужно изменять службу X Stack.
В примерах ниже предполагается, что вы используете машинопись.
Если вы хотите разрешить весь сервис (не рекомендуется) вызывать разрешение для вашей лямбды, вы можете использовать следующее:
Для S3
yourfunction.grantInvoke(new ServicePrincipal('s3.amazonaws.com'));
Для SNS
yourfunction.grantInvoke(new ServicePrincipal('sns.amazonaws.com'));
Но я бы порекомендовал указать указанный * ARN ресурса c, который вы хотите разрешить вызывать лямбду. Например, если это другая лямбда-функция, вы можете указать ее роль ARN следующим образом:
yourfunction.grantInvoke(new ArnPrincipal('arn:aws:iam:region:account-id:role/role-name'));
И, как упомянул Амит в своем ответе, вы также можете использовать addPermission, если вы хотите указать более детальные разрешения. Вы можете использовать addPermission, чтобы даже разрешить ресурсам других AWS учетных записей вызывать вашу лямбду.