AWSアカウントからすべてのリソースを削除します。
開発ステータス aws-nukeは安定していますが、すべてのAWSリソースがカバーされているわけではない可能性があります。不足しているリソースを追加してプルリクエストを作成するか、問題を作成することをお勧めします。
aws-nukeは非常に破壊的なツールであるため、使用する際には十分に注意する必要があることに注意してください。そうしないと、本番データが削除される可能性があります。
すべてのリソースを失う余裕がないAWSアカウントでは、このアプリケーションを実行しないことを強くお勧めします。
事故の爆発半径を減らすために、いくつかの安全上の注意があります:
--no-dry-run実際にリソースを削除するには、追加する必要があります 。
prod。この文字列はハードコーディングされているため、実際のすべての本番アカウントに追加することをお勧めします(例
mycompany-production-ecr)。
安全手順を改善するためのアイデアがあれば、遠慮なく問題を作成してください。
通常、十分な変更が加えられ、しばらくの間テストされたら、新しいバージョンをリリースします。
Linux、macOS、Windowsのバイナリは リリースページにありますが、コンテナ化されたバージョンはquay.io/rebuy/aws-nuke とdocker.io/rebuy/aws-nukeでも提供されています。どちらも複数のアーキテクチャ(amd64、arm64、armv7)で使用できます。
最初に、 aws-nukeの設定ファイルを作成する必要があります。これは最小限のものです:
regions:
- eu-west-1
- global
account-blocklist:
- "999999999999" # production
accounts:
"000000000000": {} # aws-nuke-example
この設定で、aws-nukeを実行できます:
$ aws-nuke -c config/nuke-config.yml --profile aws-nuke-example aws-nuke version v1.0.39.gc2f318f - Fri Jul 28 16:26:41 CEST 2017 - c2f318f37b7d2dec0e646da3d4d05ab5296d5bce Do you really want to nuke the account with the ID 000000000000 and the alias 'aws-nuke-example'? Do you want to continue? Enter account alias to continue. > aws-nuke-example eu-west-1 - EC2DHCPOption - 'dopt-bf2ec3d8' - would remove eu-west-1 - EC2Instance - 'i-01b489457a60298dd' - would remove eu-west-1 - EC2KeyPair - 'test' - would remove eu-west-1 - EC2NetworkACL - 'acl-6482a303' - cannot delete default VPC eu-west-1 - EC2RouteTable - 'rtb-ffe91e99' - would remove eu-west-1 - EC2SecurityGroup - 'sg-220e945a' - cannot delete group 'default' eu-west-1 - EC2SecurityGroup - 'sg-f20f958a' - would remove eu-west-1 - EC2Subnet - 'subnet-154d844e' - would remove eu-west-1 - EC2Volume - 'vol-0ddfb15461a00c3e2' - would remove eu-west-1 - EC2VPC - 'vpc-c6159fa1' - would remove eu-west-1 - IAMUserAccessKey - 'my-user -> ABCDEFGHIJKLMNOPQRST' - would remove eu-west-1 - IAMUserPolicyAttachment - 'my-user -> AdministratorAccess' - [UserName: "my-user", PolicyArn: "arn:aws:iam::aws:policy/AdministratorAccess", PolicyName: "AdministratorAccess"] - would remove eu-west-1 - IAMUser - 'my-user' - would remove Scan complete: 13 total, 11 nukeable, 2 filtered. Would delete these resources. Provide --no-dry-run to actually destroy resources.
ご覧のとおり、aws-nukeは、見つかったすべてのリソースと出口のみを一覧表示します。これは、
--no-dry-runフラグが欠落しているためです。また、管理者を削除したい。このユーザーを使用してアカウントにアクセスするため、これは行いません。したがって、このユーザーを無視するように構成を拡張する必要があります。
regions:
- eu-west-1
account-blocklist:
- "999999999999" # production
accounts:
"000000000000": # aws-nuke-example
filters:
IAMUser:
- "my-user"
IAMUserPolicyAttachment:
- "my-user -> AdministratorAccess"
IAMUserAccessKey:
- "my-user -> ABCDEFGHIJKLMNOPQRST"
$ aws-nuke -c config/nuke-config.yml --profile aws-nuke-example --no-dry-run aws-nuke version v1.0.39.gc2f318f - Fri Jul 28 16:26:41 CEST 2017 - c2f318f37b7d2dec0e646da3d4d05ab5296d5bce Do you really want to nuke the account with the ID 000000000000 and the alias 'aws-nuke-example'? Do you want to continue? Enter account alias to continue. > aws-nuke-example eu-west-1 - EC2DHCPOption - 'dopt-bf2ec3d8' - would remove eu-west-1 - EC2Instance - 'i-01b489457a60298dd' - would remove eu-west-1 - EC2KeyPair - 'test' - would remove eu-west-1 - EC2NetworkACL - 'acl-6482a303' - cannot delete default VPC eu-west-1 - EC2RouteTable - 'rtb-ffe91e99' - would remove eu-west-1 - EC2SecurityGroup - 'sg-220e945a' - cannot delete group 'default' eu-west-1 - EC2SecurityGroup - 'sg-f20f958a' - would remove eu-west-1 - EC2Subnet - 'subnet-154d844e' - would remove eu-west-1 - EC2Volume - 'vol-0ddfb15461a00c3e2' - would remove eu-west-1 - EC2VPC - 'vpc-c6159fa1' - would remove eu-west-1 - IAMUserAccessKey - 'my-user -> ABCDEFGHIJKLMNOPQRST' - filtered by config eu-west-1 - IAMUserPolicyAttachment - 'my-user -> AdministratorAccess' - [UserName: "my-user", PolicyArn: "arn:aws:iam::aws:policy/AdministratorAccess", PolicyName: "AdministratorAccess"] - would remove eu-west-1 - IAMUser - 'my-user' - filtered by config Scan complete: 13 total, 8 nukeable, 5 filtered. Do you really want to nuke these resources on the account with the ID 000000000000 and the alias 'aws-nuke-example'? Do you want to continue? Enter account alias to continue. > aws-nuke-example eu-west-1 - EC2DHCPOption - 'dopt-bf2ec3d8' - failed eu-west-1 - EC2Instance - 'i-01b489457a60298dd' - triggered remove eu-west-1 - EC2KeyPair - 'test' - triggered remove eu-west-1 - EC2RouteTable - 'rtb-ffe91e99' - failed eu-west-1 - EC2SecurityGroup - 'sg-f20f958a' - failed eu-west-1 - EC2Subnet - 'subnet-154d844e' - failed eu-west-1 - EC2Volume - 'vol-0ddfb15461a00c3e2' - failed eu-west-1 - EC2VPC - 'vpc-c6159fa1' - failed eu-west-1 - S3Object - 's3://rebuy-terraform-state-138758637120/run-terraform.lock' - triggered remove Removal requested: 2 waiting, 6 failed, 5 skipped, 0 finished eu-west-1 - EC2DHCPOption - 'dopt-bf2ec3d8' - failed eu-west-1 - EC2Instance - 'i-01b489457a60298dd' - waiting eu-west-1 - EC2KeyPair - 'test' - removed eu-west-1 - EC2RouteTable - 'rtb-ffe91e99' - failed eu-west-1 - EC2SecurityGroup - 'sg-f20f958a' - failed eu-west-1 - EC2Subnet - 'subnet-154d844e' - failed eu-west-1 - EC2Volume - 'vol-0ddfb15461a00c3e2' - failed eu-west-1 - EC2VPC - 'vpc-c6159fa1' - failed Removal requested: 1 waiting, 6 failed, 5 skipped, 1 finished --- truncating long output ---
ご覧のとおり、 aws-nukeは、フィルタリングされていないすべてのリソースを、それらの間の依存関係を気にせずに削除しようとします。これにより、無視できるAPIエラーが発生します。これらのエラーが引き続き表示される場合は、 aws-nukeの実行の最後に表示されます。
aws-nukeは、指定されたすべてのリソースが削除されるまで、またはエラーのあるリソースのみが残るまで、すべてのリソースの削除を再試行します。
aws-nukeを認証する方法は2つあります。静的な資格情報とプロファイルがあります。後者は、共有クレデンシャルファイル(つまり
~/.aws/credentials)または共有構成ファイル(つまり)で構成できます
~/.aws/config。
静的クレデンシャルを使用するには、コマンドラインフラグ
--access-key-idと
--secret-access-keyが必要です。フラグ
--session-tokenは一時的なセッションにのみ必要です。
共有プロファイルを使用するには、コマンドラインフラグ
--profileが必要です。プロファイルは、共有クレデンシャルファイル または引き受けの役割を持つ共有構成ファイルの静的クレデンシャルで定義する必要があります。
デフォルト以外のAWSエンドポイントに対して実行するようにaws-nukeを設定することができます。たとえば、S3アプライアンスやStratoscaleクラスターなどのローカルエンドポイントを指す統合テストに使用できます。
カスタムエンドポイントを使用するようにaws-nukeを設定するには、次の例に示すように設定ディレクティブを追加します。
regions:
- demo10
# inspired by https://www.terraform.io/docs/providers/aws/guides/custom-service-endpoints.html
endpoints:
- region: demo10
tls_insecure_skip_verify: true
services:
- service: ec2
url: https://10.16.145.115/api/v2/aws/ec2
- service: s3
url: https://10.16.145.115:1060
- service: rds
url: https://10.16.145.115/api/v2/aws/rds
- service: elbv2
url: https://10.16.145.115/api/v2/aws/elbv2
- service: efs
url: https://10.16.145.115/api/v2/aws/efs
- service: emr
url: https://10.16.145.115/api/v2/aws/emr
- service: autoscaling
url: https://10.16.145.115/api/v2/aws/autoscaling
- service: cloudwatch
url: https://10.16.145.115/api/v2/aws/cloudwatch
- service: sns
url: https://10.16.145.115/api/v2/aws/sns
- service: iam
url: https://10.16.145.115/api/v2/aws/iam
- service: acm
url: https://10.16.145.115/api/v2/aws/acm
account-blocklist:
- "account-id-of-custom-region-prod" # production
accounts:
"account-id-of-custom-region-demo10":
これは、次のように使用できます。
$ aws-nuke -c config/my.yaml --access-key-id <access-key> --secret-access-key <secret-key> --default-region demo10
aws-nuke version v2.11.0.2.gf0ad3ac.dirty - Tue Nov 26 19:15:12 IST 2019 - f0ad3aca55eb66b93b88ce2375f8ad06a7ca856f
Do you really want to nuke the account with the ID account-id-of-custom-region-demo10 and the alias 'account-id-of-custom-region-demo10'?
Do you want to continue? Enter account alias to continue.
> account-id-of-custom-region-demo10
demo10 - EC2Volume - vol-099aa1bb08454fd5bc3499897f175fd8 - [tag:Name: "volume_of_5559b38e-0a56-4078-9a6f-eb446c21cadf"] - would remove
demo10 - EC2Volume - vol-11e9b09c71924354bcb4ee77e547e7db - [tag:Name: "volume_of_e4f8c806-0235-4578-8c08-dce45d4c2952"] - would remove
demo10 - EC2Volume - vol-1a10cb3f3119451997422c435abf4275 - [tag:Name: "volume-dd2e4c4a"] - would remove
demo10 - EC2Volume - vol-1a2e649df1ef449686ef8771a078bb4e - [tag:Name: "web-server-5"] - would remove
demo10 - EC2Volume - vol-481d09bbeb334ec481c12beee6f3012e - [tag:Name: "volume_of_15b606ce-9dcd-4573-b7b1-4329bc236726"] - would remove
demo10 - EC2Volume - vol-48f6bd2bebb945848b029c80b0f2de02 - [tag:Name: "Data volume for 555e9f8a"] - would remove
demo10 - EC2Volume - vol-49f0762d84f0439da805d11b6abc1fee - [tag:Name: "Data volume for acb7f3a5"] - would remove
demo10 - EC2Volume - vol-4c34656f823542b2837ac4eaff64762b - [tag:Name: "wpdb"] - would remove
demo10 - EC2Volume - vol-875f091078134fee8d1fe3b1156a4fce - [tag:Name: "volume-f1a7c95f"] - would remove
demo10 - EC2Volume - vol-8776a0d5bd4e4aefadfa8038425edb20 - [tag:Name: "web-server-6"] - would remove
demo10 - EC2Volume - vol-8ed468bfab0b42c3bc617479b8f33600 - [tag:Name: "web-server-3"] - would remove
demo10 - EC2Volume - vol-94e0370b6ab54f03822095d74b7934b2 - [tag:Name: "web-server-2"] - would remove
demo10 - EC2Volume - vol-9ece34dfa7f64dd583ab903a1273340c - [tag:Name: "volume-4ccafc2e"] - would remove
demo10 - EC2Volume - vol-a3fb3e8800c94452aff2fcec7f06c26b - [tag:Name: "web-server-0"] - would remove
demo10 - EC2Volume - vol-a53954e17cb749a283d030f26bbaf200 - [tag:Name: "volume-5484e330"] - would remove
demo10 - EC2Volume - vol-a7afe64f4d0f4965a6703cc0cfab2ba4 - [tag:Name: "Data volume for f1a7c95f"] - would remove
demo10 - EC2Volume - vol-d0bc3f2c887f4072a9fda0b8915d94c1 - [tag:Name: "physical_volume_of_39c29f53-eac4-4f02-9781-90512cc7c563"] - would remove
demo10 - EC2Volume - vol-d1f066d8dac54ae59d087d7e9947e8a9 - [tag:Name: "Data volume for 4ccafc2e"] - would remove
demo10 - EC2Volume - vol-d9adb3f084cd4d588baa08690349b1f9 - [tag:Name: "volume_of_84854c9b-98aa-4f5b-926a-38b3398c3ad2"] - would remove
demo10 - EC2Volume - vol-db42e471b19f42b7835442545214bc1a - [tag:Name: "lb-tf-lb-20191126090616258000000002"] - would remove
demo10 - EC2Volume - vol-db80932fb47243efa67c9dd34223c647 - [tag:Name: "web-server-5"] - would remove
demo10 - EC2Volume - vol-dbea1d1083654d30a43366807a125aed - [tag:Name: "volume-555e9f8a"] - would remove
--- truncating long output ---
削除するリソースタイプの指定aws-nukeは多くのリソースを削除し、さらに追加される可能性があります
リリース。最終的には、すべてのリソースが削除されるはずです。あなたはしたいかもしれない
削除するリソースを制限します。これを構成する方法は複数あります。
1つの方法は、すでに説明したフィルターです。これは知っている必要があります
各リソースの識別子。リソース全体を防ぐことも可能です
タイプ(例
S3Bucket
)が2つのメソッドで削除されないようにします。
--targetフラグは、指定されたリソースタイプへのnukingを制限します。
--excludeナッキングを防ぎます。
次のように、構成ファイルでリソースタイプを構成することもできます。 これらの例:
--- regions: - "eu-west-1" account-blocklist: - 1234567890 resource-types: # only nuke these three resources targets: - S3Object - S3Bucket - IAMRole accounts: 555133742: {}
--- regions: - "eu-west-1" account-blocklist: - 1234567890 resource-types: # don't nuke IAM users excludes: - IAMUser accounts: 555133742: {}
ターゲットが複数の場所で指定されている場合(CLIやアカウント固有など)、 リソースタイプはすべての場所で指定する必要があります。言い換えれば、それぞれ 構成は前のものを制限します。
除外が使用されている場合、そのすべてのリソースタイプは削除されません。
ヒント:次のコマンドを使用すると、使用可能なすべてのリソースタイプを確認できます。
aws-nuke resource-types
この機能はまだリリースされておらず、おそらくの一部です
v2.18。
aws-nukeは、AWS CloudControlAPIを介したリソースの削除をサポートしています。いつaws-nukeを 実行すると、手動で管理されている CloudControlを介したリソース。
CloudControlでサポートされているリソースのサブセットのみが削除されます すでに実装されているリソースがある可能性があるため、自動的に それらも追加すると、ユーザー構成の既存のフィルターがクラウドとしてバイパスされます コントロールには、別の命名スキームと異なるプロパティのセットがあります。さらに、 特別な処理を必要とするクラウドコントロールリソースがいくつかありますが、そうではありませんまだaws-nuke によってサポートされています。
自動的にサポートされるCloudControlリソースのサブセットは制限付きで、 aws-nukeを設定して追加の試行を行うこと ができます 資源。設定ファイル経由のコマンドラインフラグ経由のいずれか。
構成ファイルの場合、リソースをに追加する必要があります リスト
resource-types.cloud-control:
resource-types:
cloud-control:
- AWS::EC2::TransitGateway
- AWS::EC2::VPC
コマンドラインを使用する場合は、
--cloud-controlフラグを追加する必要があります 追加するリソースごとに:
aws-nuke \
-c nuke-config.yaml \
--cloud-control AWS::EC2::TransitGateway \
--cloud-control AWS::EC2::VPC
注: Cloud Controlでサポートされているリソースがいくつかあり、すでにaws-nuke によってネイティブに実装されています。クラウドを使用するように構成する場合 これらのリソースを制御し、ネイティブに実装されたコードを実行しません このリソースのために。たとえば、
--cloud-control AWS::EC2::VPCそれは
EC2VPCリソース を使用しないでください。
かなり意見が分かれているいくつかの機能があります。それらを機能させるために 皆さん、aws-nukeには、これらの機能を手動で有効にするためのフラグがあります。これらはすることができます 次のように、構成のルートレベルで構成されます。
---
feature-flags:
disable-deletion-protection:
RDSInstance: true
EC2Instance: true
CloudformationStack: true
force-delete-lightsail-addons: true
現在のユーザーを削除しないために重要なこれをフィルタリングすることが可能です たとえば、グローバルに共有されているS3バケットなどのリソースの場合 名前空間であり、再作成が難しい場合があります。現在、フィルタリングはに基づいています リソース識別子。識別子はの最初のステップとして印刷されます aws-nuke(
i-01b489457a60298ddEC2インスタンスなど)。
注:フィルターを使用している場合でも、AWSアカウントでaws-nukeを実行しないでください。 すべてのリソースを失うわけにはいきません。間違いを犯しやすい フィルタ構成。また、aws-nukeは継続的に開発されているため、 どんなに注意深くレビューしても、常に新しいバグを導入する可能性があります 新しいコード。
フィルタはアカウント固有の構成の一部であり、次のようにグループ化されます。 リソースタイプ。これは、すべてのリソースを削除する構成の例ですが、 アクセス許可と2つの
adminアクセスキーを持つユーザー:
---
regions:
- global
- eu-west-1
account-blocklist:
- 1234567890
accounts:
0987654321:
filters:
IAMUser:
- "admin"
IAMUserPolicyAttachment:
- "admin -> AdministratorAccess"
IAMUserAccessKey:
- "admin -> AKSDAFRETERSDF"
- "admin -> AFGDSGRTEWSFEY"
リソース識別子がのフィルターのいずれかと完全に一致するリソース リストはスキップされます。これらは、で「構成によってフィルタリングされた」とマークされます aws-nukerun。
一部のリソースは、プロパティによるフィルタリングをサポートしています。リソースがこれらをサポートする場合 プロパティは、次の例のように出力に一覧表示されます。
global - IAMUserPolicyAttachment - 'admin -> AdministratorAccess' - [RoleName: "admin", PolicyArn: "arn:aws:iam::aws:policy/AdministratorAccess", PolicyName: "AdministratorAccess"] - would remove
プロパティを使用するには、プレーン文字列の代わりにオブジェクト
propertiesを 指定する必要があります。
value
これらのタイプは、構成を簡素化するために使用できます。たとえば、 1人のユーザーのすべてのアクセスキーを保護することが可能:
IAMUserAccessKey:
- property: UserName
value: "admin"
完全一致以外の追加の比較タイプもあります。
exact–識別子は指定された文字列と完全に一致する必要があります。これがデフォルトです。
contains–識別子には指定された文字列が含まれている必要があります。
glob–識別子は指定されたグロブと一致する必要があります パターン。これは、 文字列には、やのようなワイルドカードが含まれる場合が
*あり
?ます。グロブは ファイルパス用に設計されているため、ワイルドカードはディレクトリと一致しません セパレーター(
/)。グロブパターンの詳細はライブラリにあります ドキュメント。
regex–識別子は、指定された正規表現と一致する必要があります。 構文の詳細はライブラリにあります ドキュメント。
dateOlderThan-識別子はタイムスタンプとして解析されます。オフセットが追加された後(
valueフィールドで指定)、結果のタイムスタンプは現在のタイムスタンプより後でなければなりません 時間。オフセット構文の詳細については、ライブラリ のドキュメント。サポートされています日付形式は
2006-01-02、 エポックタイム、、、、、、およびです 。
2006/01/02
2006-01-02T15:04:05Z
2006-01-02T15:04:05.999999999Z07:00
2006-01-02T15:04:05Z07:00
デフォルト以外の比較タイプを使用するには、プレーン文字列の代わりにオブジェクト
typeを指定する必要があり ます。
value
これらのタイプは、構成を簡素化するために使用できます。たとえば、 以下を使用して、1人のユーザーのすべてのアクセスキーを保護することができます
glob。
IAMUserAccessKey:
- type: glob
value: "admin -> *"
フィルタプロパティとフィルタタイプを一緒に使用することもできます。為に 特定のTLDのすべてのホストゾーンを保護する例:
Route53HostedZone:
- property: Name
type: glob
value: "*.rebuy.cloud."
フィルターの結果は、次のように使用して反転できます
invert: true。
CloudFormationStack:
- property: Name
value: "foo"
invert: true
この場合、 CloudFormationStack以外の「foo」と呼ばれるものは フィルタリング。aws-nukeは内部的にすべてのリソースを取得し、適用することに注意してください その上のすべてのフィルター。フィルタが一致すると、ノードにフィルタ済みのマークが付けられます。
一部のフィルターが複数のアカウントで同じである場合があります。 これは特に、Terraformなどのプロビジョニングツールが使用されている場合に発生する可能性があります。 IAMリソースが同じパターンに従う場合。
この場合、aws-nukeはフィルターのプリセットをサポートします。 複数のアカウント。構成は次のようになります。
---
regions:
- "global"
- "eu-west-1"
account-blocklist:
- 1234567890
accounts:
555421337:
presets:
- "common"
555133742:
presets:
- "common"
- "terraform"
555134237:
presets:
- "common"
- "terraform"
filters:
EC2KeyPair:
- "notebook"
presets:
terraform:
filters:
S3Bucket:
- type: glob
value: "my-statebucket-*"
DynamoDBTable:
- "terraform-lock"
common:
filters:
IAMRole:
- "OrganizationAccountAccessRole"
インストールする最も簡単な方法は、 GitHubから最新リリースをダウンロードすることです。
ダウンロードして抽出
$ wget -c https://github.com/rebuy-de/aws-nuke/releases/download/v2.16.0/aws-nuke-v2.16.0-linux-amd64.tar.gz -O - | sudo tar -xz -C $HOME/bin
走る
$ aws-nuke-v2.16.0-linux-amd64
ソースから aws-nukeをコンパイルするには、動作するGolang開発環境が必要です。情報源 に複製する必要があります
$GOPATH/src/github.com/rebuy-de/aws-nuke。
また、 Glide、 golint、GNUをインストールする必要があります 作る。
次に、実行
make buildしてバイナリをプロジェクトにコンパイルする必要があります ディレクトリを作成するか、aws-nukeを
make installにインストールします。これにより 、他のプラットフォーム用にaws-nukeをクロスコンパイルできます。
$GOPATH/bin
make xc
次のようなコマンドを使用して、Dockerでaws-nukeを実行できます。
$ docker run \
--rm -it \
-v /full-path/to/nuke-config.yml:/home/aws-nuke/config.yml \
-v /home/user/.aws:/home/aws-nuke/.aws \
quay.io/rebuy/aws-nuke:v2.11.0 \
--profile default \
--config /home/aws-nuke/config.yml
これを機能させるには、AWS設定とaws-nuke設定のパスを調整する必要があります 。
また、正しいAWSプロファイルを指定する必要があります。AWSをマウントする代わりに
--access-key-idディレクトリでは、および
--secret-access-keyフラグ を使用できます。
画像タグには必ず最新バージョンを使用してください。
mainまたは、最新の開発バージョンに使用することもできますが 、これはより多くのバージョンであることに注意してください。 いつでも壊れそうです。
aws-nukeの単体テストを行うには、一部のテストでgomockを実行する必要があります。 これはを介して実行さ
go generate ./...れますが、を介して自動的に実行され
make testます。 単体テストを実行するには:
make test
バグレポートや機能リクエストについては、GitHubの問題を自由に作成してください。 質問については、メーリングリストを使用してください:aws-nuke@googlegroups.com。あなたはできる また、メーリングリストのアーカイブを検索して、誰かがすでに同じものを持っているかどうかを確認します 問題:https ://groups.google.com/d/forum/aws-nuke
このリポジトリをフォークしてaws-nukeに貢献するには、 変更し、リポジトリに対してプルリクエストを作成します。よくわからない場合 問題を解決する方法や、貢献について他に質問がある場合は、 GitHubの問題を作成します。