💡
addPropertyOverride()を使ってAmplify overrideでアカウトIDやリージョンを参照する
はじめに
Amplify overrideでAmplifyで作成したCognitoのメール送信をSESに設定する際に、アカウントIDやリージョンをコード上にベタ書きを避ける方法を探していました。
export function override(
resources: AmplifyAuthCognitoStackTemplate,
amplifyProjectInfo: AmplifyProjectInfo
) {
const domain = "example.com";
// ↓ accountIdとregionをベタ書きしたくない。
const accountId = "1234567890";
const region = "ap-northeast-1";
resources.userPool.emailConfiguration = {
emailSendingAccount: "DEVELOPER",
from: `no-reply@${domain}`,
sourceArn: `arn:aws:ses:${region}:${accountId}:identity/${domain}`,
}
}
Amplify overrideでアカウトIDやリージョンを参照する方法
以下のissueにやり方がありました。addPropertyOverride()
で素のCloudFormationテンプレートで設定を記述することができるため、CloudFormationの擬似パラメータ参照を使って参照するとのこと。
addPropertyOverride()
を使ってアカウントIDとリージョンを取得する
はじめに で例として挙げた、Cognitoのメール送信をSESに設定するコードをaddPropertyOverride()
を使って修正してみました。
export function override(
resources: AmplifyAuthCognitoStackTemplate,
amplifyProjectInfo: AmplifyProjectInfo
) {
const domain = "example.com";
resources.userPool.addPropertyOverride("EmailConfiguration", {
EmailSendingAccount: "DEVELOPER",
From: `no-reply@${domain}`,
SourceArn: {
"Fn::Join": [
"",
[
"arn:aws:ses:",
{ Ref: "AWS::Region" },
":",
{ Ref: "AWS::AccountId" },
`:identity/${domain}`,
],
],
},
});
}
これでアカウントIDとリージョンをベタ書きしなくてよくなりました。
同じようなことをしようとしている方がいれば是非参考にしてみてください。
Discussion