広告ここから
広告ここまで
AWSアドベントカレンダー / AWS Amplifyアドベントカレンダー / Next.jsアドベントカレンダー 9日目のクロスポストです。
目次
Next.jsのAPIから、AWSのAPIを呼び出したい
たとえば「外部サービスのAPI TokenをSystems Managerから取得したい」など、Next.jsのAPI処理内部でAWS APIを呼び出したくなるケースはいくつか存在します。
AWS CDKでデプロイしている場合には、Constructを上書きすることで更新できます。
コードサンプル
const app = new NextJSLambdaEdge(this, "NextJsApp", {
serverlessBuildOutDir: "./build",
});
const targets = [app.defaultNextLambda, app.nextApiLambda];
targets.forEach((target) => {
target.addToRolePolicy(
new PolicyStatement({
resources: ["*"],
actions: ["ssm:GetParameter"],
})
);
});
コード概説
AWS CDKでServerless Next.jsを利用する場合、NextJSLambdaEdge
コンストラクタを利用します。そしてこの中には、デプロイするLambda@Edgeのリソースが含まれています。
APIやgetServerSiteProps
などを実行するLambda@edgeのリソースがわかれば、あとはそれに対してaddToRolePolicy
を実行してIAMポリシーを追加してやればOKです。
対象となるLambda@edgeのattribute名
addToRolePolicy
がforEach内で実装されているのは、設定が必要なFunctionが複数あったためです。
- defaultNextLambda
- nextApiLambda
- nextImageLambda
next/imageでAWS APIを叩くことはあまりない気がしますので、上の2つに必要に応じて設定する方法で良いかとは思います。

ブックマークや限定記事(予定)など
WP Kyotoサポーター募集中
WordPressやフロントエンドアプリのホスティング、Algolia・AWSなどのサービス利用料を支援する「WP Kyotoサポーター」を募集しています。
月額または年額の有料プランを契約すると、ブックマーク機能などのサポーター限定機能がご利用いただけます。
14日間のトライアルも用意しておりますので、「このサイトよく見るな」という方はぜひご検討ください。
広告ここから
広告ここまで