aws route53 get-hosted-zone

先日に続いて表題のコマンドについて。

■ 環境

  • awscli 1.14.50
  • Mac OSX El Capitan

■ route53 get-hosted-zone

Hosted zone“の詳細を取得する。`get-hosted-zone`には必須オプションで”–id“が必要であるので、先日の`list-hosted-zones`で得られるIDを用いる。

$ aws route53 list-hosted-zones
  :
$ aws route53 get-hosted-zone --id /hostedzone/XXXXXXXXXXXXXX
{
    "HostedZone": {
        "Id": "/hostedzone/XXXXXXXXXXXXXX",
        "Name": "withsin.com.",
        "CallerReference": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
        "Config": {
            "PrivateZone": false
        },
        "ResourceRecordSetCount": 12
    },
    "DelegationSet": {
        "NameServers": [
            "ns-XXX.awsdns-XX.net",
            "ns-XXX.awsdns-XX.org",
            "ns-XXX.awsdns-XX.com",
            "ns-XXX.awsdns-XX.co.uk"
        ]
    }
}

ここで得られた”NameServers“をドメインを取得した管理元に設定する。

以上。

■ 関連

aws route53 list-hosted-zones

aws route53 list-hosted-zones

表題のコマンドを実行する。Route53系のコマンドを叩きたいのだが、まずは”hosted-zone-id“を知らなければいけないようなので取得したい。

■ 環境

  • awscli 1.14.50
  • Mac OSX El Capitan

■ route53 list-hosted-zones

Hosted zone“の一覧を取得する。

$ aws route53 list-hosted-zones
{
    "HostedZones": [
        {
            "Id": "/hostedzone/XXXXXXXXXXXXXX",
            "Name": "withsin.example.com.",
            "CallerReference": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
            "Config": {
                "PrivateZone": false
            },
            "ResourceRecordSetCount": 7
        },
  :
    ]
}
$

id“は”/hostedzone/“から始まるようだ。またその”Hosted zone“にいくつのレコードが登録されているかも取得できる。

さて”hosted-zone-id“が取得できたので、これを元に他のサブコマンドを使用してやりたいことができそうである。

以上。

特定prefix配下のオブジェクトを全て削除

AWS S3において表題の件を`aws`コマンドで行いたい。

■ 環境

  • awscli 1.14.50
  • Mac OSX El Capitan

■ aws s3 rm

不要なオブジェクトが大量にある。件数を出してみると50万個…。どれもS3のライフサイクルを設定される前に作成されたもので既に不要になったものの残ってしまっていたオブジェクトである。さすがに50万個もあるので1個ずつ消していくとかなりの時間がかかってしまう。というわけである程度prefixで対象をまとめることができそうだったので、特定のprefix配下にあるオブジェクト全てを削除したい。

$ aws s3 rm s3://..../path/to/ --recursive

–recursive“を付けることで、指定したprefix配下全てを削除してくれる。

prefixを絞ってみたところ、対象が50万個であったオブジェクトが1万5千prefix程度になった。これでも十分多いのであるがさすがに50万個に比べれば我慢できる範囲である。後は1行スクリプトでどんどん消していくだけである。

以上。

aws acm get-certificate

表題のコメントについて。

■ 環境

  • awscli 1.14.50
  • Mac OSX El Capitan

■ get-certificate

サブコマンド名の通り、証明書の取得である。

もちろん取得できるのは証明書と中間証明書だけである。下記のようにして取得することができる。まずは`acm list-certificates`で取得したい証明書の”CertificateArn“を確認することが必要である。

$ aws acm list-certificates
{
    "CertificateSummaryList": [
        {
            "CertificateArn": "arn:aws:acm:ap-northeast-1:XXXXXXXXXXXX:certificate/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
            "DomainName": "example.withsin.net"
        },
        {
  :
$ aws acm get-certificate --certificate-arn arn:aws:acm:ap-northeast-1:XXXXXXXXXXXX:certificate/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
{
    "Certificate": "-----BEGIN CERTIFICATE-----\nMII...\n-----END CERTIFICATE-----\n",
    "CertificateChain": "-----BEGIN CERTIFICATE-----\nMII.../\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMII...\n-----END CERTIFICATE-----"
}

ManagementConsoleから証明書をインポートした時には下記3つを投入している。

  • 証明書本文
  • 証明書のプライベートキー
  • 証明書チェーン

インポート時に注意メッセージがあったように、秘密鍵は取得することはできない。当然か。

以上。

■ 関連

aws acm describe-certificate

aws acm list-certificates

aws acm describe-certificate

表題について。

■ 環境

  • awscli 1.14.30
  • Mac OSX El Capitan

■ describe-certificate

個々の証明書についての情報を取得できる。オプションに”–certificate-arn“は必須であり、`aws acm list-certificates`の結果が必要である。

$ aws acm list-certificates
{
    "CertificateSummaryList": [
        {
            "CertificateArn": "arn:aws:acm:ap-northeast-1:XXXXXXXXXXXX:certificate/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
            "DomainName": "www.withsin.net"
        },
  :
    ]
}
$
$ aws acm describe-certificate --certificate-arn arn:aws:acm:ap-northeast-1:XXXXXXXXXXXX:certificate/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
{
    "Certificate": {
        "CertificateArn": "arn:aws:acm:ap-northeast-1:XXXXXXXXXXXX:certificate/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
        "DomainName": "www.withsin.net",
        "SubjectAlternativeNames": [
            "www.withsin.net"
        ],
        "DomainValidationOptions": [
            {
                "DomainName": "www.withsin.net",
                "ValidationStatus": "SUCCESS",
                "ResourceRecord": {
                    :
                },
                "ValidationMethod": "DNS"
            }
        ],
        "Serial": "XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX",
        "Subject": "CN=www.withsin.net",
        "Issuer": "Amazon",
        :
        "Status": "ISSUED",
        :
        "KeyAlgorithm": "RSA-2048",
        "SignatureAlgorithm": "SHA256WITHRSA",
        "InUseBy": [
            "arn:aws:elasticloadbalancing:ap-northeast-1:XXXXXXXXXXXX:loadbalancer/app/withsin/XXXXXXXXXXXXXXXX"
        ],
        "Type": "AMAZON_ISSUED",
        :
    }
}
$

結構いろいろわかる。”ACMで発行された証明書”であるとか。ManagementConsoleでは一覧画面で出ている内容である。ちなみにインポートした証明書の場合は下記のようになっていた。

$ aws acm describe-certificate --certificate-arn arn:aws:acm:ap-northeast-1:XXXXXXXXXXXX:certificate/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
{
  :
        "Serial": "XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX",
        "Subject": "CN=blog.withsin.net",
        "Issuer": "GeoTrust Inc.",
        "ImportedAt": XXXXXXXX.0,        :
        "Status": "ISSUED",
  :
        "Type": "AMAZON_ISSUED",
  :
}
$

以上。

■ 関連

aws acm list-certificates