LoginSignup
1
0

More than 1 year has passed since last update.

ServerlessFrameworkでサービス名を長くしすぎるとデプロイできない

Posted at

はじめに

ServerlessFrameworkでAPIGateway, Lambdaへのデプロイした際に発生したエラーについて記録に残したいと思います。

原因

デプロイの際、作成されるIamRoleの文字数制限を超えてしまい、エラーが発生する。

エラー内容

Error:
CREATE_FAILED: IamRoleLambdaExecution (AWS::IAM::Role)
1 validation error detected: Value 'XXXXXXX-XXXX-XXXXXXXXXXXXXX-XXXX-XXX-dev-ap-northeast-1-lambdaRole' at 'roleName' failed to satisfy constraint: Member must have length less than or equal to 64 (Service: AmazonIdentityManagement; Status Code: 400; Error Code: ValidationError; Request ID: XXXXXXXXXXXXXXXX; Proxy: null)

XXX..-lambdaRoleというロール名は制約を満たしていません。64文字以下でなければなりません。」と言われました。

クォータについて

AWSのサービスにはクォータ(quota)と呼ばれる制限のようなものが設定されています。
可用性と信頼性の高いサービスを提供し、またオペレーションミスなどによる意図しない支出からユーザーを保護するために実装されているそうです。
一部のクォータについては引き上げをリクエストすることができますが、それ以外はリクエストできません。

IAMのクォータについて

IAMにはオブジェクトのサイズを制限するクォータがあり、それに影響を及ぼす、オブジェクトの数や文字数に制限が設定されています。
IamRoleに関しては64文字以下と設定されていました。

ServerlessFrameworkによるIamRoleの命名規則について

ServerlessFrameworkではデプロイ時以下のようにロールの名前がつけられます。

<serviceName>-<stage>-<region>-lambdaRole

つまり、stageがdev、regionがap-northeast-1の場合、serviceNameには34文字しか使用できません。
なので、サービス名34文字を超えるとIamRole名の文字数制限に引っかかり、エラーが発生してしまいます。

解決方法

IamRole名を64文字以下に収めるため、ステージ名やリージョンにもよるがサービス名を長くても30文字程度に収める。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0