AWS announces preview of AWS Interconnect - multicloud
AWS announces AWS Interconnect – multicloud (preview), providing simple, resilient, high-speed private connections to other cloud service providers. AWS Interconnect - multicloud is easy to configure and provides high-speed, resilient connectivity with dedicated bandwidth, enabling customers to interconnect AWS networking services such as AWS Transit Gateway, AWS Cloud WAN, and Amazon VPC to other cloud service providers with ease.
AWSebSecurityGroup が削除に失敗した場合、Elastic Beanstalk 環境を終了または再構築する方法を教えてください。
AWS Elastic Beanstalk 環境を終了または再構築すると、次のエラーが表示されます。 「スタックの削除に失敗しました: 次のリソースを削除できませんでした:[AWSEBSecurityGroup]。」
簡単な説明
AWSEBSecurityGroup は、基盤となる AWS CloudFormation スタックが Elastic Beanstalk を介して作成する Amazon Elastic Compute Cloud (Amazon EC2) セキュリティグループです。Elastic Beanstalk 環境の外部で作成された エラスティックネットワークインターフェイス またはセキュリティグループが AWSebSecurityGroup を使用している場合、環境を終了または再構築するとその環境は機能しなくなります。
**注:**Elastic Beanstalk が作成するリソースを管理するには、Elastic Beanstalk コンソール、Elastic Beanstalk コマンドラインインターフェイス (EB CLI)、または AWS コマンドラインインターフェイス (AWS CLI) を使用することをおすすめします。AWS CLI のコマンドの実行時にエラーが発生する場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
解決策
この問題を解決するには、次のタスクのいずれかを実行します。
- AWS CloudFormation コンソールまたは AWS CLI のいずれかを使用して、Elastic Beanstalk 環境が作成した CloudFormation スタックを削除します。次に、Elastic Beanstalk 環境を終了または再構築します。
- Elastic Beanstalk セキュリティグループから依存するオブジェクトを削除します。次に、Elastic Beanstalk 環境を終了または再構築します。
**注:**次の AWS CLI コマンドでは、スタック名、環境名、AWS リージョン、およびその他の環境固有の変数の値を入力します。
CloudFormation コンソールからスタックを削除する
**重要:**Elastic Beanstalk 環境に統合された Amazon Relational Database Service (Amazon RDS) データベースがある場合は、まず Amazon RDS DB インスタンスを切り離します。
CloudFormation コンソールまたは AWS CLI のいずれかを使用して、スタックを削除することができます。
**CloudFormation コンソール **
- CloudFormation コンソールを開きます。
- [スタック] ページで、削除に失敗したスタックを選択します。
**注:**スタックの [ステータス] 列には DELETE_FAILED と表示されます。 - [削除] を選択します。
- [スタックの削除] ポップアップウィンドウで、「AWSebSecurityGroup」を選択し、[削除] を選択します。
重要: 必ずセキュリティグループを削除してください。スタックを削除しても、AWSebSecurityGroup は自動的に削除されません。別の依存リソースが原因で環境の終了に失敗した場合は、まず [スタックを削除] ポップアップウィンドウから「DELETE_FAILED」状態の適切なリソースを選択します。次に、[削除] を選択します。 - Elastic Beanstalk 環境を[終了] または [再構築] します。
AWS CLI
-
CloudFormation スタックを削除するには、describe-network-interface-attribute コマンドを実行します。
aws cloudformation delete-stack --stack-name awseb-e-ztrauxujck-stack --retain-resources "AWSEBSecurityGroup" --region us-east-1 -
Elastic Beanstalk 環境を終了するには、terminate-environment コマンドを実行します。
aws elasticbeanstalk terminate-environment --environment-name my-env --region us-east-1 -
Elastic Beanstalk 環境を再構築するには、rebuild-environment コマンドを実行します。
aws elasticbeanstalk rebuild-environment --environment-name my-env --region us-east-1
Elastic Beanstalk セキュリティグループの依存オブジェクトを見つけて削除します。
AWSEBSecurityGroup を削除できない依存ネットワークインターフェイスまたは依存セキュリティグループを見つけるには、次の手順を実行します。Amazon EC2 コンソールまたは AWS CLI のいずれかを使用できます。
Amazon EC2 コンソール
- Elastic Beanstalk イベントストリーム のエラーメッセージから AWSEBSecurityGroup のセキュリティグループ ID を取得します。
- Amazon EC2 コンソールを開きます。
- ナビゲーションペインで [セキュリティグループ] を選択します。次に、AWS AWSEBSecurityGroup ID を選択します。
- [アクション] を選択し、[セキュリティグループの削除] を選択して、AWSEBSecurityGroup への依存関係を検索します。
- [セキュリティグループの削除] ポップアップウィンドウで、次の手順を実行します。
[関連するインスタンスを表示] を選択します。
[アクション] を選択し、[ネットワーク] を選択します。
[セキュリティグループの変更] を選択します。
**[AWSebSecurityGroup ID] ** チェックボックスと ** [セキュリティグループを割り当てる] ** チェックボックスをオフにします。 - [セキュリティグループの削除] ポップアップウィンドウで、[参照しているセキュリティグループを表示] を選択します。
- AWSebSecurityGroup ** ID の関連付けを削除するには、[アクション]** を選択し、[インバウンドルールを編集] または [アウトバウンドルールを編集] を選択します。
- Elastic Beanstalk 環境を[終了] または [再構築] します。
AWS CLI
-
Elastic Beanstalk イベントストリーム のエラーメッセージから AWSEBSecurityGroup のセキュリティグループ ID を取得します。
-
.ebextensions フォルダに、次の例を参考に .config ファイルを作成します。
#!/bin/bash SecurityGroupID=$1 Region=$2 DependentENI=$(aws ec2 describe-network-interfaces --filters Name=group-id,Values=[$SecurityGroupID] --region $Region | jq '.NetworkInterfaces[].NetworkInterfaceId') DependentSGingress=$(aws ec2 describe-security-groups --filters Name=ip-permission.group-id,Values=[$SecurityGroupID] --region $Region | jq '.SecurityGroups[] .GroupId') DependentSGegress=$(aws ec2 describe-security-groups --filters Name=egress.ip-permission.group-id,Values=[$SecurityGroupID] --region $Region | jq '.SecurityGroups[] .GroupId') echo "The dependent ENI is $DependentENI" echo "The security group id with a dependency in ingress rule : $DependentSGingress" echo "The security group id with a dependency in egress rule : $DependentSGegress" -
bash スクリプトを sg_dependency.sh という名前で保存します。
-
jq ウェブ サイトから jq utility をインストールします。
-
ネットワークインターフェイス ID、セキュリティグループ ID、またはその両方を取得するには、次のコマンドを実行します。
./sg_dependency.sh sg-111aaa22 us-east-1**注:**sg-111aaa22 を自分の AWSEBSecurityGroup ID に置き換えてください。us-east-1 を AWS リージョンに置き換えてください。
-
ネットワークインターフェイス ID にアタッチされているセキュリティグループを見つけるには、describe-network-interface-attribute コマンドを実行します。
aws ec2 describe-network-interface-attribute --network-interface-id eni-1099d901 --attribute groupSet -
AWSebSecurityGroup ID をデタッチするには、modify-network-interface-attribute コマンドを実行します。
aws ec2 modify-network-interface-attribute --network-interface-id eni-1099d901 --groups sg-030644d6c95b6470a sg-d34a33a8 sg-059c081ab30c3e38e sg-0e4eabc747368e6c9**重要:**前のコマンドでは、AWSebSecurityGroup ID を除外します。他のセキュリティグループ ID を含めて、ネットワークインターフェイスにアタッチされたままにします。ネットワークインターフェイスを作成した AWS サービスに AWSEBSecurityGroup ID を含めると、コマンド出力は次のエラーを返します。 "An error occurred (AuthFailure) when calling the ModifyNetworkInterfaceAttribute operation: You don't have permission to access the specified resource".
-
describe-security-groups コマンドを実行して、依存するセキュリティグループのすべての受信ルールと送信ルールを一覧表示します。
-
ステップ 7 の出力に応じて revoke-security-group-ingress コマンドまたは revoke-security-group-egress コマンドを実行します。
**例:**AWSEBSecurityGroup ID が sg-111aaa22 で、ステップ 8 の出力の入力ルールにそのセキュリティグループ ID が含まれている場合は、次のコマンドを実行します。aws ec2 revoke-security-group-ingress --group-id sg-0018a2fbdcd5797ea --ip-permissions '\[{"PrefixListIds":\[\],"FromPort":0,"IpRanges":\[\],"ToPort":65535,"IpProtocol":"tcp","UserIdGroupPairs":\[{"UserId":"123456789102","GroupId":"sg-111aaa22"}\],"Ipv6Ranges":\[\]}\]'**注:****ユーザー ID ** は AWS アカウント ID です。
-
Elastic Beanstalk 環境を終了するには、terminate-environment コマンドを実行します。
aws elasticbeanstalk terminate-environment --environment-name my-env --region us-east-1
- Elastic Beanstalk 環境を再構築するには、rebuild-environment コマンドを実行します。
aws elasticbeanstalk rebuild-environment --environment-name my-env --region us-east-1
関連情報
関連するコンテンツ
AWS公式更新しました 3ヶ月前