RuleGroupって何だ?

表題の通り。ManagementConsoleと見比べてみてもよくわからなかった。

■ 環境

  • AWS WAF
  • awscli 1.15.70
  • macOS High Sierra

■ aws waf-regional help

`help`でサブコマンドの一覧を見ていて、”rule-group“ってなんだろう?となった。

$ aws waf-regional help

rule-group“を含むサブコマンドは下記があるようだ。

  • create-rule-group
  • delete-rule-group
  • get-rule-group
  • list-activated-rules-in-rule-group
  • list-rule-groups
  • list-subscribed-rule-groups
  • update-rule-group

なんだろう?と悩んでいたが、これはどうやらManagementRuleのことのようだ。まぁわかったからって何もないのだが…。一旦ManagementRuleは使用しないので無視で良いだろう。

以上。

WebACLが設定されているリソースの取得

AWS WAFにおいて表題を知りたい。

■ 環境

  • AWS WAF
  • awscli 1.15.70
  • macOS High Sierra

■ ManagementConsole

WAFの画面を確認すると、WebACLを選択した後の”Rules“タブにおける下の方に”AWS resources using this web ACL“がある。これを`aws`コマンドで取得したい。

■ aws waf-regionsl

下記のように取得することができる。必須パラメータは”–web-acl-id”なので、これは以前のエントリで取得する。

$ aws waf-regional list-resources-for-web-acl --web-acl-id XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
{
    "ResourceArns": [
        "arn:aws:elasticloadbalancing:ap-northeast-1:XXXXXXXXXXXX:loadbalancer/app/example/XXXXXXXXXXXXXXXX"
    ]
}
$

これより、設定されている対象は”example“という名称の”ALB“であることがわかる。

以上。

■ 関連

WebACL IDの取得

WebACL IDの取得

AWS WAFにおいて表題の通り。AWS WAFを使い始めた。

■ 環境

  • AWS WAF
  • awscli 1.15.60
  • macOS High Sierra

■ list-web-acls

下記でWebACLの一覧を取得できる。その中で”WebACL ID“も取得ができる。

$ aws waf-regional list-web-acls
{
    "NextMarker": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    "WebACLs": [
        {
            "WebACLId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX1",
            "Name": "example1"
        },
        {
            "WebACLId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX2",
            "Name": "example2"
        },
        {
            "WebACLId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX3",
            "Name": "example3"
        }
    ]
}
$

上記はALBに設定可能なWebACLの一覧である。また”region“は”ap-northeast-1“を設定ファイルで書いているので省略している。

■ get-web-acl

WebACL ID“がわからないと取得すらできないが…。

$ aws waf-regional get-web-acl --web-acl-id XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX1
{
    "WebACL": {
        "WebACLId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX1",
        "Name": "example1",
        "MetricName": "example1",
        "DefaultAction": {
            "Type": "ALLOW"
        },
        "Rules": [
            {
  :

以上。

■ 関連

WebACLが設定されているリソースの取得

aws configure list

表題を知らなかったのでメモ。

■ 環境

awscli 1.15.60
macOS High Sierra

■ aws

参考にさせてもらってるブログで記載されていたので試してみた。

$ aws --profile production configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile               production           manual    --profile
access_key     ****************XXXX shared-credentials-file
secret_key     ****************xxxx shared-credentials-file
    region           ap-northeast-1      config-file    ~/.aws/config
$

どのprofileを使うか、鍵は何かがわかるようだ。上記では`access_key`/`secret_key`は別ファイルに書き出されてるよ、と教えてくれる。環境変数で指定しているものが適用されているときは”Type”に”env”と記載されるようだ。

profile“を指定して実行したところ、そちらも思い通りの結果を得られた。

以上。

Kinesis Data Firehoseにデータ投入

表題を試したい。

■ 環境

  • awscli 1.15.0
  • AWS Kinesis Data Firehose
  • macOS High Sierra

■ Kinesis Data Firehose

ManagementConsoleからいろいろ設定をして環境は作った。テストをしたくて簡易的にデータを入れて動作を確認したい。

$ aws firehose help

`firehose`サブコマンドを使うようである。どんなコマンドがあるかと確認すると下記であった。

  • create-delivery-stream
  • delete-delivery-stream
  • describe-delivery-stream
  • help
  • list-delivery-streams
  • list-tags-for-delivery-stream
  • put-record
  • put-record-batch
  • tag-delivery-stream
  • untag-delivery-stream
  • update-destination

データの投入をしたいので、今回は`list-delivery-streams`/`describe-delivery-stream`/`put-record`だけを確認してみる。

$ aws firehose list-delivery-streams
{
  "DeliveryStreamNames": [
    "example-stream-001"
  ],
  "HasMoreDeliveryStreams": false
}
$

詳細を見てみる。

$ aws firehose describe-delivery-stream --delivery-stream-name example-stream-001
{
  "DeliveryStreamDescription": {
    "DeliveryStreamName": "example-stream-001",
    "DeliveryStreamARN": "arn:aws:firehose:ap-northeast-1:XXXXXXXXXXXX:deliverystream/example-stream-001",
    "DeliveryStreamStatus": "ACTIVE",
    "DeliveryStreamType": "DirectPut",
    "VersionId": "1",
    "CreateTimestamp": 1533028327.363,
    "Destinations": [
      {
        "DestinationId": "destinationId-000000000001",
        "S3DestinationDescription": {
        "RoleARN": "arn:aws:iam::XXXXXXXXXXXX:role/firehose_delivery_role",
        "BucketARN": "arn:aws:s3:::firehose-example",
        "Prefix": "logs/",
        "BufferingHints": {
          "SizeInMBs": 5,
          "IntervalInSeconds": 60
        },
        "CompressionFormat": "GZIP",
        "EncryptionConfiguration": {
          "NoEncryptionConfig": "NoEncryption"
        },
        "CloudWatchLoggingOptions": {
          "Enabled": true,
          "LogGroupName": "/aws/kinesisfirehose/example-stream-001",
          "LogStreamName": "S3Delivery"
        }
      },
      "ExtendedS3DestinationDescription": {
        "RoleARN": "arn:aws:iam::XXXXXXXXXXXX:role/firehose_delivery_role",
        "BucketARN": "arn:aws:s3:::firehose-example",
        "Prefix": "logs/",
        "BufferingHints": {
          "SizeInMBs": 5,
          "IntervalInSeconds": 60
        },
        "CompressionFormat": "GZIP",
        "EncryptionConfiguration": {
          "NoEncryptionConfig": "NoEncryption"
        },
        "CloudWatchLoggingOptions": {
          "Enabled": true,
          "LogGroupName": "/aws/kinesisfirehose/example-stream-001",
          "LogStreamName": "S3Delivery"
        },
        "ProcessingConfiguration": {
          "Enabled": false,
          "Processors": []
        },
        "S3BackupMode": "Disabled"
      }
    }
  ],
  "HasMoreDestinations": false
  }
}
$

設定した通りの内容が出てきている気がする。

JSONでデータをしたかったのだが、下記でできた。

aws firehose put-record --delivery-stream-name example-stream-001 --record '{"Data":"{\"attribute\":1}"}'

以上。