如何在 serverless.ts 文件中设置 function.events.sns.arn?
How to set function.events.sns.arn in a serverless.ts file?
我正在使用 aws-nodejs-typescript
模板设置一个新的无服务器 TypeScript monorepo。该模板生成一个 serverless.ts
配置文件。
支持为现有 SNS 主题添加 AWS SNS 事件侦听器:
https://www.serverless.com/framework/docs/providers/aws/events/sns/
但是,sns 事件的类型定义中没有相应的属性:
TS2322: Type ‘{ arn: string; }’ is not assignable to type ‘Sns’. Object literal may only specify known properties, and ‘arn’ does not exist in type ‘Sns’.
awsProvider.d.ts(487, 9): The expected type comes from property ‘sns’ which is declared here on type ‘Event’
如何使用 serverless.ts
为现有 SNS 主题配置事件?
答案是..类型强制!不得不向下转换为未知,然后向上转换为 Sns 事件类型。这是我的设置中的最小 serverless.ts
:
import type { Serverless, ApiGateway, Sns } from 'serverless/aws';
const serverlessConfiguration: Serverless = {
service: {
name: 'foo',
},
frameworkVersion: '2',
custom: {
webpack: {
webpackConfig: './webpack.config.js',
packager: 'yarn',
includeModules: true,
},
},
package: {
individually: true,
},
plugins: ['serverless-webpack', 'serverless-jest-plugin'],
provider: {
name: 'aws',
runtime: 'nodejs12.x',
region: 'us-west-2',
stage: "${opt:stage, 'dev'}",
apiGateway: {
minimumCompressionSize: 1024,
shouldStartNameWithService: true,
} as ApiGateway,
environment: {
AWS_NODEJS_CONNECTION_REUSE_ENABLED: '1',
},
},
functions: {
bar: {
handler: 'src/baz.handler',
timeout: 900,
reservedConcurrency: 1,
events: [
{
sns: ({
arn:
'${cf:another-stack.TopicArn}',
} as unknown) as Sns,
},
],
},
},
};
module.exports = serverlessConfiguration;
我正在使用 aws-nodejs-typescript
模板设置一个新的无服务器 TypeScript monorepo。该模板生成一个 serverless.ts
配置文件。
支持为现有 SNS 主题添加 AWS SNS 事件侦听器:
https://www.serverless.com/framework/docs/providers/aws/events/sns/
但是,sns 事件的类型定义中没有相应的属性:
TS2322: Type ‘{ arn: string; }’ is not assignable to type ‘Sns’. Object literal may only specify known properties, and ‘arn’ does not exist in type ‘Sns’.
awsProvider.d.ts(487, 9): The expected type comes from property ‘sns’ which is declared here on type ‘Event’
如何使用 serverless.ts
为现有 SNS 主题配置事件?
答案是..类型强制!不得不向下转换为未知,然后向上转换为 Sns 事件类型。这是我的设置中的最小 serverless.ts
:
import type { Serverless, ApiGateway, Sns } from 'serverless/aws';
const serverlessConfiguration: Serverless = {
service: {
name: 'foo',
},
frameworkVersion: '2',
custom: {
webpack: {
webpackConfig: './webpack.config.js',
packager: 'yarn',
includeModules: true,
},
},
package: {
individually: true,
},
plugins: ['serverless-webpack', 'serverless-jest-plugin'],
provider: {
name: 'aws',
runtime: 'nodejs12.x',
region: 'us-west-2',
stage: "${opt:stage, 'dev'}",
apiGateway: {
minimumCompressionSize: 1024,
shouldStartNameWithService: true,
} as ApiGateway,
environment: {
AWS_NODEJS_CONNECTION_REUSE_ENABLED: '1',
},
},
functions: {
bar: {
handler: 'src/baz.handler',
timeout: 900,
reservedConcurrency: 1,
events: [
{
sns: ({
arn:
'${cf:another-stack.TopicArn}',
} as unknown) as Sns,
},
],
},
},
};
module.exports = serverlessConfiguration;