From 469311fcfe2db1571ab521659ce200b8026238a1 Mon Sep 17 00:00:00 2001 From: Alexander GQ Gerasiov Date: Sun, 20 Oct 2019 19:51:09 +0300 Subject: [PATCH] New upstream version 1.9.253 --- .changes/1.9.100.json | 42 + .changes/1.9.101.json | 22 + .changes/1.9.102.json | 22 + .changes/1.9.103.json | 37 + .changes/1.9.104.json | 12 + .changes/1.9.105.json | 22 + .changes/1.9.106.json | 12 + .changes/1.9.107.json | 12 + .changes/1.9.108.json | 22 + .changes/1.9.109.json | 12 + .changes/1.9.110.json | 37 + .changes/1.9.111.json | 17 + .changes/1.9.112.json | 32 + .changes/1.9.113.json | 7 + .changes/1.9.114.json | 12 + .changes/1.9.115.json | 37 + .changes/1.9.116.json | 17 + .changes/1.9.117.json | 12 + .changes/1.9.118.json | 17 + .changes/1.9.119.json | 27 + .changes/1.9.120.json | 12 + .changes/1.9.121.json | 37 + .changes/1.9.122.json | 12 + .changes/1.9.123.json | 37 + .changes/1.9.124.json | 22 + .changes/1.9.125.json | 17 + .changes/1.9.126.json | 12 + .changes/1.9.127.json | 17 + .changes/1.9.128.json | 12 + .changes/1.9.129.json | 12 + .changes/1.9.130.json | 27 + .changes/1.9.131.json | 32 + .changes/1.9.132.json | 12 + .changes/1.9.133.json | 37 + .changes/1.9.134.json | 17 + .changes/1.9.135.json | 52 + .changes/1.9.136.json | 32 + .changes/1.9.137.json | 12 + .changes/1.9.138.json | 12 + .changes/1.9.139.json | 32 + .changes/1.9.140.json | 17 + .changes/1.9.141.json | 12 + .changes/1.9.142.json | 22 + .changes/1.9.143.json | 22 + .changes/1.9.144.json | 22 + .changes/1.9.145.json | 27 + .changes/1.9.146.json | 12 + .changes/1.9.147.json | 17 + .changes/1.9.148.json | 22 + .changes/1.9.149.json | 32 + .changes/1.9.150.json | 12 + .changes/1.9.151.json | 7 + .changes/1.9.152.json | 17 + .changes/1.9.153.json | 12 + .changes/1.9.154.json | 42 + .changes/1.9.155.json | 12 + .changes/1.9.156.json | 17 + .changes/1.9.157.json | 47 + .changes/1.9.158.json | 32 + .changes/1.9.159.json | 47 + .changes/1.9.160.json | 12 + .changes/1.9.161.json | 27 + .changes/1.9.162.json | 7 + .changes/1.9.163.json | 42 + .changes/1.9.164.json | 7 + .changes/1.9.165.json | 27 + .changes/1.9.166.json | 7 + .changes/1.9.167.json | 7 + .changes/1.9.168.json | 22 + .changes/1.9.169.json | 22 + .changes/1.9.170.json | 22 + .changes/1.9.171.json | 12 + .changes/1.9.172.json | 7 + .changes/1.9.173.json | 32 + .changes/1.9.174.json | 22 + .changes/1.9.175.json | 47 + .changes/1.9.176.json | 12 + .changes/1.9.177.json | 12 + .changes/1.9.178.json | 7 + .changes/1.9.179.json | 22 + .changes/1.9.180.json | 22 + .changes/1.9.181.json | 22 + .changes/1.9.182.json | 17 + .changes/1.9.183.json | 22 + .changes/1.9.184.json | 7 + .changes/1.9.185.json | 47 + .changes/1.9.186.json | 17 + .changes/1.9.187.json | 7 + .changes/1.9.188.json | 22 + .changes/1.9.189.json | 17 + .changes/1.9.190.json | 22 + .changes/1.9.191.json | 12 + .changes/1.9.192.json | 7 + .changes/1.9.193.json | 12 + .changes/1.9.194.json | 12 + .changes/1.9.195.json | 22 + .changes/1.9.196.json | 17 + .changes/1.9.197.json | 37 + .changes/1.9.198.json | 12 + .changes/1.9.199.json | 17 + .changes/1.9.200.json | 12 + .changes/1.9.201.json | 17 + .changes/1.9.202.json | 7 + .changes/1.9.203.json | 7 + .changes/1.9.204.json | 22 + .changes/1.9.205.json | 27 + .changes/1.9.206.json | 22 + .changes/1.9.207.json | 7 + .changes/1.9.208.json | 7 + .changes/1.9.209.json | 32 + .changes/1.9.210.json | 17 + .changes/1.9.211.json | 12 + .changes/1.9.212.json | 22 + .changes/1.9.213.json | 37 + .changes/1.9.214.json | 12 + .changes/1.9.215.json | 17 + .changes/1.9.216.json | 12 + .changes/1.9.217.json | 7 + .changes/1.9.218.json | 17 + .changes/1.9.219.json | 27 + .changes/1.9.220.json | 17 + .changes/1.9.221.json | 17 + .changes/1.9.222.json | 17 + .changes/1.9.223.json | 7 + .changes/1.9.224.json | 7 + .changes/1.9.225.json | 37 + .changes/1.9.226.json | 7 + .changes/1.9.227.json | 32 + .changes/1.9.228.json | 22 + .changes/1.9.229.json | 12 + .changes/1.9.230.json | 17 + .changes/1.9.231.json | 17 + .changes/1.9.232.json | 17 + .changes/1.9.233.json | 22 + .changes/1.9.234.json | 12 + .changes/1.9.235.json | 17 + .changes/1.9.236.json | 17 + .changes/1.9.237.json | 12 + .changes/1.9.238.json | 12 + .changes/1.9.239.json | 17 + .changes/1.9.240.json | 7 + .changes/1.9.241.json | 7 + .changes/1.9.242.json | 22 + .changes/1.9.243.json | 17 + .changes/1.9.244.json | 32 + .changes/1.9.245.json | 22 + .changes/1.9.246.json | 17 + .changes/1.9.247.json | 22 + .changes/1.9.248.json | 7 + .changes/1.9.249.json | 12 + .changes/1.9.250.json | 7 + .changes/1.9.251.json | 17 + .changes/1.9.252.json | 12 + .changes/1.9.253.json | 7 + .changes/1.9.87.json | 22 + .changes/1.9.88.json | 17 + .changes/1.9.89.json | 12 + .changes/1.9.90.json | 22 + .changes/1.9.91.json | 17 + .changes/1.9.92.json | 17 + .changes/1.9.93.json | 7 + .changes/1.9.94.json | 17 + .changes/1.9.95.json | 12 + .changes/1.9.96.json | 17 + .changes/1.9.97.json | 12 + .changes/1.9.98.json | 27 + .changes/1.9.99.json | 17 + .gitignore | 5 +- CHANGELOG.rst | 1404 +++++++++++++++++ LICENSE | 183 ++- NOTICE | 2 + boto3/__init__.py | 2 +- boto3/compat.py | 5 + boto3/dynamodb/transform.py | 8 +- boto3/dynamodb/types.py | 7 +- docs/source/conf.py | 2 +- docs/source/guide/cloud9.rst | 2 +- docs/source/guide/configuration.rst | 229 ++- .../guide/cw-example-subscription-filters.rst | 2 +- docs/source/guide/cw-examples.rst | 2 +- docs/source/guide/dynamodb.rst | 1 - docs/source/guide/examples.rst | 20 +- docs/source/guide/index.rst | 42 +- .../kms-example-encrypt-decrypt-file.rst | 332 ++++ docs/source/guide/kms-examples.rst | 33 + docs/source/guide/migration.rst | 2 +- docs/source/guide/resources.rst | 2 +- .../guide/s3-example-access-permissions.rst | 55 +- .../guide/s3-example-bucket-policies.rst | 117 +- .../guide/s3-example-configuring-buckets.rst | 96 +- .../guide/s3-example-creating-buckets.rst | 140 +- .../source/guide/s3-example-download-file.rst | 72 +- .../guide/s3-example-static-web-host.rst | 105 +- docs/source/guide/s3-examples.rst | 23 +- docs/source/guide/s3-presigned-urls.rst | 211 +++ docs/source/guide/s3-uploading-files.rst | 161 ++ docs/source/guide/s3.rst | 614 +------ docs/source/guide/ses-example-verify.rst | 128 -- docs/source/guide/ses-examples.rst | 14 +- docs/source/guide/ses-filters.rst | 44 +- docs/source/guide/ses-rules.rst | 50 +- docs/source/guide/ses-template.rst | 28 +- docs/source/guide/ses-verify.rst | 77 +- .../guide/sqs-example-dead-letter-queue.rst | 13 +- .../source/guide/sqs-example-long-polling.rst | 32 +- .../sqs-example-sending-receiving-msgs.rst | 10 +- .../source/guide/sqs-example-using-queues.rst | 16 +- .../guide/sqs-example-visibility-timeout.rst | 12 +- docs/source/guide/sqs-examples.rst | 18 +- docs/source/index.rst | 16 +- setup.cfg | 4 +- setup.py | 4 +- tests/integration/test_dynamodb.py | 4 +- tests/integration/test_s3.py | 7 +- 214 files changed, 6226 insertions(+), 1309 deletions(-) create mode 100644 .changes/1.9.100.json create mode 100644 .changes/1.9.101.json create mode 100644 .changes/1.9.102.json create mode 100644 .changes/1.9.103.json create mode 100644 .changes/1.9.104.json create mode 100644 .changes/1.9.105.json create mode 100644 .changes/1.9.106.json create mode 100644 .changes/1.9.107.json create mode 100644 .changes/1.9.108.json create mode 100644 .changes/1.9.109.json create mode 100644 .changes/1.9.110.json create mode 100644 .changes/1.9.111.json create mode 100644 .changes/1.9.112.json create mode 100644 .changes/1.9.113.json create mode 100644 .changes/1.9.114.json create mode 100644 .changes/1.9.115.json create mode 100644 .changes/1.9.116.json create mode 100644 .changes/1.9.117.json create mode 100644 .changes/1.9.118.json create mode 100644 .changes/1.9.119.json create mode 100644 .changes/1.9.120.json create mode 100644 .changes/1.9.121.json create mode 100644 .changes/1.9.122.json create mode 100644 .changes/1.9.123.json create mode 100644 .changes/1.9.124.json create mode 100644 .changes/1.9.125.json create mode 100644 .changes/1.9.126.json create mode 100644 .changes/1.9.127.json create mode 100644 .changes/1.9.128.json create mode 100644 .changes/1.9.129.json create mode 100644 .changes/1.9.130.json create mode 100644 .changes/1.9.131.json create mode 100644 .changes/1.9.132.json create mode 100644 .changes/1.9.133.json create mode 100644 .changes/1.9.134.json create mode 100644 .changes/1.9.135.json create mode 100644 .changes/1.9.136.json create mode 100644 .changes/1.9.137.json create mode 100644 .changes/1.9.138.json create mode 100644 .changes/1.9.139.json create mode 100644 .changes/1.9.140.json create mode 100644 .changes/1.9.141.json create mode 100644 .changes/1.9.142.json create mode 100644 .changes/1.9.143.json create mode 100644 .changes/1.9.144.json create mode 100644 .changes/1.9.145.json create mode 100644 .changes/1.9.146.json create mode 100644 .changes/1.9.147.json create mode 100644 .changes/1.9.148.json create mode 100644 .changes/1.9.149.json create mode 100644 .changes/1.9.150.json create mode 100644 .changes/1.9.151.json create mode 100644 .changes/1.9.152.json create mode 100644 .changes/1.9.153.json create mode 100644 .changes/1.9.154.json create mode 100644 .changes/1.9.155.json create mode 100644 .changes/1.9.156.json create mode 100644 .changes/1.9.157.json create mode 100644 .changes/1.9.158.json create mode 100644 .changes/1.9.159.json create mode 100644 .changes/1.9.160.json create mode 100644 .changes/1.9.161.json create mode 100644 .changes/1.9.162.json create mode 100644 .changes/1.9.163.json create mode 100644 .changes/1.9.164.json create mode 100644 .changes/1.9.165.json create mode 100644 .changes/1.9.166.json create mode 100644 .changes/1.9.167.json create mode 100644 .changes/1.9.168.json create mode 100644 .changes/1.9.169.json create mode 100644 .changes/1.9.170.json create mode 100644 .changes/1.9.171.json create mode 100644 .changes/1.9.172.json create mode 100644 .changes/1.9.173.json create mode 100644 .changes/1.9.174.json create mode 100644 .changes/1.9.175.json create mode 100644 .changes/1.9.176.json create mode 100644 .changes/1.9.177.json create mode 100644 .changes/1.9.178.json create mode 100644 .changes/1.9.179.json create mode 100644 .changes/1.9.180.json create mode 100644 .changes/1.9.181.json create mode 100644 .changes/1.9.182.json create mode 100644 .changes/1.9.183.json create mode 100644 .changes/1.9.184.json create mode 100644 .changes/1.9.185.json create mode 100644 .changes/1.9.186.json create mode 100644 .changes/1.9.187.json create mode 100644 .changes/1.9.188.json create mode 100644 .changes/1.9.189.json create mode 100644 .changes/1.9.190.json create mode 100644 .changes/1.9.191.json create mode 100644 .changes/1.9.192.json create mode 100644 .changes/1.9.193.json create mode 100644 .changes/1.9.194.json create mode 100644 .changes/1.9.195.json create mode 100644 .changes/1.9.196.json create mode 100644 .changes/1.9.197.json create mode 100644 .changes/1.9.198.json create mode 100644 .changes/1.9.199.json create mode 100644 .changes/1.9.200.json create mode 100644 .changes/1.9.201.json create mode 100644 .changes/1.9.202.json create mode 100644 .changes/1.9.203.json create mode 100644 .changes/1.9.204.json create mode 100644 .changes/1.9.205.json create mode 100644 .changes/1.9.206.json create mode 100644 .changes/1.9.207.json create mode 100644 .changes/1.9.208.json create mode 100644 .changes/1.9.209.json create mode 100644 .changes/1.9.210.json create mode 100644 .changes/1.9.211.json create mode 100644 .changes/1.9.212.json create mode 100644 .changes/1.9.213.json create mode 100644 .changes/1.9.214.json create mode 100644 .changes/1.9.215.json create mode 100644 .changes/1.9.216.json create mode 100644 .changes/1.9.217.json create mode 100644 .changes/1.9.218.json create mode 100644 .changes/1.9.219.json create mode 100644 .changes/1.9.220.json create mode 100644 .changes/1.9.221.json create mode 100644 .changes/1.9.222.json create mode 100644 .changes/1.9.223.json create mode 100644 .changes/1.9.224.json create mode 100644 .changes/1.9.225.json create mode 100644 .changes/1.9.226.json create mode 100644 .changes/1.9.227.json create mode 100644 .changes/1.9.228.json create mode 100644 .changes/1.9.229.json create mode 100644 .changes/1.9.230.json create mode 100644 .changes/1.9.231.json create mode 100644 .changes/1.9.232.json create mode 100644 .changes/1.9.233.json create mode 100644 .changes/1.9.234.json create mode 100644 .changes/1.9.235.json create mode 100644 .changes/1.9.236.json create mode 100644 .changes/1.9.237.json create mode 100644 .changes/1.9.238.json create mode 100644 .changes/1.9.239.json create mode 100644 .changes/1.9.240.json create mode 100644 .changes/1.9.241.json create mode 100644 .changes/1.9.242.json create mode 100644 .changes/1.9.243.json create mode 100644 .changes/1.9.244.json create mode 100644 .changes/1.9.245.json create mode 100644 .changes/1.9.246.json create mode 100644 .changes/1.9.247.json create mode 100644 .changes/1.9.248.json create mode 100644 .changes/1.9.249.json create mode 100644 .changes/1.9.250.json create mode 100644 .changes/1.9.251.json create mode 100644 .changes/1.9.252.json create mode 100644 .changes/1.9.253.json create mode 100644 .changes/1.9.87.json create mode 100644 .changes/1.9.88.json create mode 100644 .changes/1.9.89.json create mode 100644 .changes/1.9.90.json create mode 100644 .changes/1.9.91.json create mode 100644 .changes/1.9.92.json create mode 100644 .changes/1.9.93.json create mode 100644 .changes/1.9.94.json create mode 100644 .changes/1.9.95.json create mode 100644 .changes/1.9.96.json create mode 100644 .changes/1.9.97.json create mode 100644 .changes/1.9.98.json create mode 100644 .changes/1.9.99.json create mode 100644 NOTICE create mode 100644 docs/source/guide/kms-example-encrypt-decrypt-file.rst create mode 100644 docs/source/guide/kms-examples.rst create mode 100644 docs/source/guide/s3-presigned-urls.rst create mode 100644 docs/source/guide/s3-uploading-files.rst delete mode 100644 docs/source/guide/ses-example-verify.rst diff --git a/.changes/1.9.100.json b/.changes/1.9.100.json new file mode 100644 index 0000000..0788a0e --- /dev/null +++ b/.changes/1.9.100.json @@ -0,0 +1,42 @@ +[ + { + "category": "``kinesis-video-archived-media``", + "description": "[``botocore``] Update kinesis-video-archived-media client to latest version", + "type": "api-change" + }, + { + "category": "``workdocs``", + "description": "[``botocore``] Update workdocs client to latest version", + "type": "api-change" + }, + { + "category": "``codebuild``", + "description": "[``botocore``] Update codebuild client to latest version", + "type": "api-change" + }, + { + "category": "``cloudwatch``", + "description": "[``botocore``] Update cloudwatch client to latest version", + "type": "api-change" + }, + { + "category": "``organizations``", + "description": "[``botocore``] Update organizations client to latest version", + "type": "api-change" + }, + { + "category": "``kinesisvideo``", + "description": "[``botocore``] Update kinesisvideo client to latest version", + "type": "api-change" + }, + { + "category": "``kinesis-video-media``", + "description": "[``botocore``] Update kinesis-video-media client to latest version", + "type": "api-change" + }, + { + "category": "``transfer``", + "description": "[``botocore``] Update transfer client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.101.json b/.changes/1.9.101.json new file mode 100644 index 0000000..8bd4e71 --- /dev/null +++ b/.changes/1.9.101.json @@ -0,0 +1,22 @@ +[ + { + "category": "``athena``", + "description": "[``botocore``] Update athena client to latest version", + "type": "api-change" + }, + { + "category": "``glue``", + "description": "[``botocore``] Update glue client to latest version", + "type": "api-change" + }, + { + "category": "``stepfunctions``", + "description": "[``botocore``] Update stepfunctions client to latest version", + "type": "api-change" + }, + { + "category": "``cloud9``", + "description": "[``botocore``] Update cloud9 client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.102.json b/.changes/1.9.102.json new file mode 100644 index 0000000..cec987c --- /dev/null +++ b/.changes/1.9.102.json @@ -0,0 +1,22 @@ +[ + { + "category": "``elbv2``", + "description": "[``botocore``] Update elbv2 client to latest version", + "type": "api-change" + }, + { + "category": "``mediastore``", + "description": "[``botocore``] Update mediastore client to latest version", + "type": "api-change" + }, + { + "category": "``ce``", + "description": "[``botocore``] Update ce client to latest version", + "type": "api-change" + }, + { + "category": "``autoscaling``", + "description": "[``botocore``] Update autoscaling client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.103.json b/.changes/1.9.103.json new file mode 100644 index 0000000..43ef255 --- /dev/null +++ b/.changes/1.9.103.json @@ -0,0 +1,37 @@ +[ + { + "category": "``discovery``", + "description": "[``botocore``] Update discovery client to latest version", + "type": "api-change" + }, + { + "category": "``organizations``", + "description": "[``botocore``] Update organizations client to latest version", + "type": "api-change" + }, + { + "category": "``resource-groups``", + "description": "[``botocore``] Update resource-groups client to latest version", + "type": "api-change" + }, + { + "category": "``opsworkscm``", + "description": "[``botocore``] Update opsworkscm client to latest version", + "type": "api-change" + }, + { + "category": "``pinpoint``", + "description": "[``botocore``] Update pinpoint client to latest version", + "type": "api-change" + }, + { + "category": "``mediaconvert``", + "description": "[``botocore``] Update mediaconvert client to latest version", + "type": "api-change" + }, + { + "category": "``cur``", + "description": "[``botocore``] Update cur client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.104.json b/.changes/1.9.104.json new file mode 100644 index 0000000..ab55d7b --- /dev/null +++ b/.changes/1.9.104.json @@ -0,0 +1,12 @@ +[ + { + "category": "``waf-regional``", + "description": "[``botocore``] Update waf-regional client to latest version", + "type": "api-change" + }, + { + "category": "``waf``", + "description": "[``botocore``] Update waf client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.105.json b/.changes/1.9.105.json new file mode 100644 index 0000000..8db3304 --- /dev/null +++ b/.changes/1.9.105.json @@ -0,0 +1,22 @@ +[ + { + "category": "``ssm``", + "description": "[``botocore``] Update ssm client to latest version", + "type": "api-change" + }, + { + "category": "``apigatewayv2``", + "description": "[``botocore``] Update apigatewayv2 client to latest version", + "type": "api-change" + }, + { + "category": "``alexaforbusiness``", + "description": "[``botocore``] Update alexaforbusiness client to latest version", + "type": "api-change" + }, + { + "category": "``application-autoscaling``", + "description": "[``botocore``] Update application-autoscaling client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.106.json b/.changes/1.9.106.json new file mode 100644 index 0000000..ed5b79f --- /dev/null +++ b/.changes/1.9.106.json @@ -0,0 +1,12 @@ +[ + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + }, + { + "category": "``autoscaling-plans``", + "description": "[``botocore``] Update autoscaling-plans client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.107.json b/.changes/1.9.107.json new file mode 100644 index 0000000..54d10dc --- /dev/null +++ b/.changes/1.9.107.json @@ -0,0 +1,12 @@ +[ + { + "category": "``mediapackage``", + "description": "[``botocore``] Update mediapackage client to latest version", + "type": "api-change" + }, + { + "category": "``ssm``", + "description": "[``botocore``] Update ssm client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.108.json b/.changes/1.9.108.json new file mode 100644 index 0000000..1dd7112 --- /dev/null +++ b/.changes/1.9.108.json @@ -0,0 +1,22 @@ +[ + { + "category": "``textract``", + "description": "[``botocore``] Update textract client to latest version", + "type": "api-change" + }, + { + "category": "``storagegateway``", + "description": "[``botocore``] Update storagegateway client to latest version", + "type": "api-change" + }, + { + "category": "``medialive``", + "description": "[``botocore``] Update medialive client to latest version", + "type": "api-change" + }, + { + "category": "``codedeploy``", + "description": "[``botocore``] Update codedeploy client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.109.json b/.changes/1.9.109.json new file mode 100644 index 0000000..7cfdf86 --- /dev/null +++ b/.changes/1.9.109.json @@ -0,0 +1,12 @@ +[ + { + "category": "``directconnect``", + "description": "[``botocore``] Update directconnect client to latest version", + "type": "api-change" + }, + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.110.json b/.changes/1.9.110.json new file mode 100644 index 0000000..0442ad8 --- /dev/null +++ b/.changes/1.9.110.json @@ -0,0 +1,37 @@ +[ + { + "category": "``gamelift``", + "description": "[``botocore``] Update gamelift client to latest version", + "type": "api-change" + }, + { + "category": "``greengrass``", + "description": "[``botocore``] Update greengrass client to latest version", + "type": "api-change" + }, + { + "category": "``appmesh``", + "description": "[``botocore``] Update appmesh client to latest version", + "type": "api-change" + }, + { + "category": "``rds``", + "description": "[``botocore``] Update rds client to latest version", + "type": "api-change" + }, + { + "category": "``medialive``", + "description": "[``botocore``] Update medialive client to latest version", + "type": "api-change" + }, + { + "category": "``autoscaling``", + "description": "[``botocore``] Update autoscaling client to latest version", + "type": "api-change" + }, + { + "category": "``ecs``", + "description": "[``botocore``] Update ecs client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.111.json b/.changes/1.9.111.json new file mode 100644 index 0000000..31bd0f7 --- /dev/null +++ b/.changes/1.9.111.json @@ -0,0 +1,17 @@ +[ + { + "category": "``s3``", + "description": "[``botocore``] Update s3 client to latest version", + "type": "api-change" + }, + { + "category": "``codebuild``", + "description": "[``botocore``] Update codebuild client to latest version", + "type": "api-change" + }, + { + "category": "``sagemaker``", + "description": "[``botocore``] Update sagemaker client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.112.json b/.changes/1.9.112.json new file mode 100644 index 0000000..feea375 --- /dev/null +++ b/.changes/1.9.112.json @@ -0,0 +1,32 @@ +[ + { + "category": "``iot``", + "description": "[``botocore``] Update iot client to latest version", + "type": "api-change" + }, + { + "category": "``quicksight``", + "description": "[``botocore``] Update quicksight client to latest version", + "type": "api-change" + }, + { + "category": "``glue``", + "description": "[``botocore``] Update glue client to latest version", + "type": "api-change" + }, + { + "category": "``ce``", + "description": "[``botocore``] Update ce client to latest version", + "type": "api-change" + }, + { + "category": "``elasticbeanstalk``", + "description": "[``botocore``] Update elasticbeanstalk client to latest version", + "type": "api-change" + }, + { + "category": "``rekognition``", + "description": "[``botocore``] Update rekognition client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.113.json b/.changes/1.9.113.json new file mode 100644 index 0000000..5eaa63f --- /dev/null +++ b/.changes/1.9.113.json @@ -0,0 +1,7 @@ +[ + { + "category": "``serverlessrepo``", + "description": "[``botocore``] Update serverlessrepo client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.114.json b/.changes/1.9.114.json new file mode 100644 index 0000000..e01640a --- /dev/null +++ b/.changes/1.9.114.json @@ -0,0 +1,12 @@ +[ + { + "category": "``config``", + "description": "[``botocore``] Update config client to latest version", + "type": "api-change" + }, + { + "category": "``logs``", + "description": "[``botocore``] Update logs client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.115.json b/.changes/1.9.115.json new file mode 100644 index 0000000..3b1dc2d --- /dev/null +++ b/.changes/1.9.115.json @@ -0,0 +1,37 @@ +[ + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + }, + { + "category": "``config``", + "description": "[``botocore``] Update config client to latest version", + "type": "api-change" + }, + { + "category": "``acm``", + "description": "[``botocore``] Update acm client to latest version", + "type": "api-change" + }, + { + "category": "``iot``", + "description": "[``botocore``] Update iot client to latest version", + "type": "api-change" + }, + { + "category": "``acm-pca``", + "description": "[``botocore``] Update acm-pca client to latest version", + "type": "api-change" + }, + { + "category": "``cloudwatch``", + "description": "[``botocore``] Update cloudwatch client to latest version", + "type": "api-change" + }, + { + "category": "``sagemaker``", + "description": "[``botocore``] Update sagemaker client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.116.json b/.changes/1.9.116.json new file mode 100644 index 0000000..f8694a9 --- /dev/null +++ b/.changes/1.9.116.json @@ -0,0 +1,17 @@ +[ + { + "category": "``dms``", + "description": "[``botocore``] Update dms client to latest version", + "type": "api-change" + }, + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + }, + { + "category": "``chime``", + "description": "[``botocore``] Update chime client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.117.json b/.changes/1.9.117.json new file mode 100644 index 0000000..3fc8de3 --- /dev/null +++ b/.changes/1.9.117.json @@ -0,0 +1,12 @@ +[ + { + "category": "``config``", + "description": "[``botocore``] Update config client to latest version", + "type": "api-change" + }, + { + "category": "``eks``", + "description": "[``botocore``] Update eks client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.118.json b/.changes/1.9.118.json new file mode 100644 index 0000000..89266ef --- /dev/null +++ b/.changes/1.9.118.json @@ -0,0 +1,17 @@ +[ + { + "category": "``cognito-identity``", + "description": "[``botocore``] Update cognito-identity client to latest version", + "type": "api-change" + }, + { + "category": "``codepipeline``", + "description": "[``botocore``] Update codepipeline client to latest version", + "type": "api-change" + }, + { + "category": "``meteringmarketplace``", + "description": "[``botocore``] Update meteringmarketplace client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.119.json b/.changes/1.9.119.json new file mode 100644 index 0000000..b585b69 --- /dev/null +++ b/.changes/1.9.119.json @@ -0,0 +1,27 @@ +[ + { + "category": "``iot``", + "description": "[``botocore``] Update iot client to latest version", + "type": "api-change" + }, + { + "category": "``lightsail``", + "description": "[``botocore``] Update lightsail client to latest version", + "type": "api-change" + }, + { + "category": "``autoscaling``", + "description": "[``botocore``] Update autoscaling client to latest version", + "type": "api-change" + }, + { + "category": "``events``", + "description": "[``botocore``] Update events client to latest version", + "type": "api-change" + }, + { + "category": "``cognito-idp``", + "description": "[``botocore``] Update cognito-idp client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.120.json b/.changes/1.9.120.json new file mode 100644 index 0000000..f55762d --- /dev/null +++ b/.changes/1.9.120.json @@ -0,0 +1,12 @@ +[ + { + "category": "``iot1click-projects``", + "description": "[``botocore``] Update iot1click-projects client to latest version", + "type": "api-change" + }, + { + "category": "``transcribe``", + "description": "[``botocore``] Update transcribe client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.121.json b/.changes/1.9.121.json new file mode 100644 index 0000000..9e8af3c --- /dev/null +++ b/.changes/1.9.121.json @@ -0,0 +1,37 @@ +[ + { + "category": "``iotanalytics``", + "description": "[``botocore``] Update iotanalytics client to latest version", + "type": "api-change" + }, + { + "category": "``robomaker``", + "description": "[``botocore``] Update robomaker client to latest version", + "type": "api-change" + }, + { + "category": "``directconnect``", + "description": "[``botocore``] Update directconnect client to latest version", + "type": "api-change" + }, + { + "category": "``mediaconvert``", + "description": "[``botocore``] Update mediaconvert client to latest version", + "type": "api-change" + }, + { + "category": "``transcribe``", + "description": "[``botocore``] Update transcribe client to latest version", + "type": "api-change" + }, + { + "category": "``fms``", + "description": "[``botocore``] Update fms client to latest version", + "type": "api-change" + }, + { + "category": "``iot1click-devices``", + "description": "[``botocore``] Update iot1click-devices client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.122.json b/.changes/1.9.122.json new file mode 100644 index 0000000..5ebf80b --- /dev/null +++ b/.changes/1.9.122.json @@ -0,0 +1,12 @@ +[ + { + "category": "``workmail``", + "description": "[``botocore``] Update workmail client to latest version", + "type": "api-change" + }, + { + "category": "``glue``", + "description": "[``botocore``] Update glue client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.123.json b/.changes/1.9.123.json new file mode 100644 index 0000000..aa43578 --- /dev/null +++ b/.changes/1.9.123.json @@ -0,0 +1,37 @@ +[ + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + }, + { + "category": "``appmesh``", + "description": "[``botocore``] Update appmesh client to latest version", + "type": "api-change" + }, + { + "category": "``ecs``", + "description": "[``botocore``] Update ecs client to latest version", + "type": "api-change" + }, + { + "category": "``elbv2``", + "description": "[``botocore``] Update elbv2 client to latest version", + "type": "api-change" + }, + { + "category": "``transfer``", + "description": "[``botocore``] Update transfer client to latest version", + "type": "api-change" + }, + { + "category": "``storagegateway``", + "description": "[``botocore``] Update storagegateway client to latest version", + "type": "api-change" + }, + { + "category": "``s3``", + "description": "[``botocore``] Update s3 client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.124.json b/.changes/1.9.124.json new file mode 100644 index 0000000..598f688 --- /dev/null +++ b/.changes/1.9.124.json @@ -0,0 +1,22 @@ +[ + { + "category": "``servicecatalog``", + "description": "[``botocore``] Update servicecatalog client to latest version", + "type": "api-change" + }, + { + "category": "``medialive``", + "description": "[``botocore``] Update medialive client to latest version", + "type": "api-change" + }, + { + "category": "``pinpoint-email``", + "description": "[``botocore``] Update pinpoint-email client to latest version", + "type": "api-change" + }, + { + "category": "``workspaces``", + "description": "[``botocore``] Update workspaces client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.125.json b/.changes/1.9.125.json new file mode 100644 index 0000000..763762a --- /dev/null +++ b/.changes/1.9.125.json @@ -0,0 +1,17 @@ +[ + { + "category": "``comprehend``", + "description": "[``botocore``] Update comprehend client to latest version", + "type": "api-change" + }, + { + "category": "``cloudwatch``", + "description": "[``botocore``] Update cloudwatch client to latest version", + "type": "api-change" + }, + { + "category": "``greengrass``", + "description": "[``botocore``] Update greengrass client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.126.json b/.changes/1.9.126.json new file mode 100644 index 0000000..e5c3fa0 --- /dev/null +++ b/.changes/1.9.126.json @@ -0,0 +1,12 @@ +[ + { + "category": "``emr``", + "description": "[``botocore``] Update emr client to latest version", + "type": "api-change" + }, + { + "category": "``ssm``", + "description": "[``botocore``] Update ssm client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.127.json b/.changes/1.9.127.json new file mode 100644 index 0000000..8f097c5 --- /dev/null +++ b/.changes/1.9.127.json @@ -0,0 +1,17 @@ +[ + { + "category": "``securityhub``", + "description": "[``botocore``] Update securityhub client to latest version", + "type": "api-change" + }, + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + }, + { + "category": "``acm``", + "description": "[``botocore``] Update acm client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.128.json b/.changes/1.9.128.json new file mode 100644 index 0000000..8d22b65 --- /dev/null +++ b/.changes/1.9.128.json @@ -0,0 +1,12 @@ +[ + { + "category": "``batch``", + "description": "[``botocore``] Update batch client to latest version", + "type": "api-change" + }, + { + "category": "``comprehend``", + "description": "[``botocore``] Update comprehend client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.129.json b/.changes/1.9.129.json new file mode 100644 index 0000000..b0a8706 --- /dev/null +++ b/.changes/1.9.129.json @@ -0,0 +1,12 @@ +[ + { + "category": "``eks``", + "description": "[``botocore``] Update eks client to latest version", + "type": "api-change" + }, + { + "category": "``iam``", + "description": "[``botocore``] Update iam client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.130.json b/.changes/1.9.130.json new file mode 100644 index 0000000..d0aebe0 --- /dev/null +++ b/.changes/1.9.130.json @@ -0,0 +1,27 @@ +[ + { + "category": "``mediaconvert``", + "description": "[``botocore``] Update mediaconvert client to latest version", + "type": "api-change" + }, + { + "category": "``glue``", + "description": "[``botocore``] Update glue client to latest version", + "type": "api-change" + }, + { + "category": "``comprehend``", + "description": "[``botocore``] Update comprehend client to latest version", + "type": "api-change" + }, + { + "category": "``iot1click-devices``", + "description": "[``botocore``] Update iot1click-devices client to latest version", + "type": "api-change" + }, + { + "category": "``medialive``", + "description": "[``botocore``] Update medialive client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.131.json b/.changes/1.9.131.json new file mode 100644 index 0000000..a78b9c7 --- /dev/null +++ b/.changes/1.9.131.json @@ -0,0 +1,32 @@ +[ + { + "category": "``organizations``", + "description": "[``botocore``] Update organizations client to latest version", + "type": "api-change" + }, + { + "category": "``mq``", + "description": "[``botocore``] Update mq client to latest version", + "type": "api-change" + }, + { + "category": "``redshift``", + "description": "[``botocore``] Update redshift client to latest version", + "type": "api-change" + }, + { + "category": "``storagegateway``", + "description": "[``botocore``] Update storagegateway client to latest version", + "type": "api-change" + }, + { + "category": "``cloudwatch``", + "description": "[``botocore``] Update cloudwatch client to latest version", + "type": "api-change" + }, + { + "category": "``cognito-idp``", + "description": "[``botocore``] Update cognito-idp client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.132.json b/.changes/1.9.132.json new file mode 100644 index 0000000..50d0281 --- /dev/null +++ b/.changes/1.9.132.json @@ -0,0 +1,12 @@ +[ + { + "category": "``polly``", + "description": "[``botocore``] Update polly client to latest version", + "type": "api-change" + }, + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.133.json b/.changes/1.9.133.json new file mode 100644 index 0000000..4f2f5ab --- /dev/null +++ b/.changes/1.9.133.json @@ -0,0 +1,37 @@ +[ + { + "category": "``kafka``", + "description": "[``botocore``] Update kafka client to latest version", + "type": "api-change" + }, + { + "category": "``cognito-idp``", + "description": "[``botocore``] Update cognito-idp client to latest version", + "type": "api-change" + }, + { + "category": "``rds``", + "description": "[``botocore``] Update rds client to latest version", + "type": "api-change" + }, + { + "category": "``worklink``", + "description": "[``botocore``] Update worklink client to latest version", + "type": "api-change" + }, + { + "category": "``workspaces``", + "description": "[``botocore``] Update workspaces client to latest version", + "type": "api-change" + }, + { + "category": "``discovery``", + "description": "[``botocore``] Update discovery client to latest version", + "type": "api-change" + }, + { + "category": "``organizations``", + "description": "[``botocore``] Update organizations client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.134.json b/.changes/1.9.134.json new file mode 100644 index 0000000..44e37c2 --- /dev/null +++ b/.changes/1.9.134.json @@ -0,0 +1,17 @@ +[ + { + "category": "``resource-groups``", + "description": "[``botocore``] Update resource-groups client to latest version", + "type": "api-change" + }, + { + "category": "``transcribe``", + "description": "[``botocore``] Update transcribe client to latest version", + "type": "api-change" + }, + { + "category": "``workspaces``", + "description": "[``botocore``] Update workspaces client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.135.json b/.changes/1.9.135.json new file mode 100644 index 0000000..ca2d0fb --- /dev/null +++ b/.changes/1.9.135.json @@ -0,0 +1,52 @@ +[ + { + "category": "``mediatailor``", + "description": "[``botocore``] Update mediatailor client to latest version", + "type": "api-change" + }, + { + "category": "``rds``", + "description": "[``botocore``] Update rds client to latest version", + "type": "api-change" + }, + { + "category": "``cloudformation``", + "description": "[``botocore``] Update cloudformation client to latest version", + "type": "api-change" + }, + { + "category": "``ssm``", + "description": "[``botocore``] Update ssm client to latest version", + "type": "api-change" + }, + { + "category": "``storagegateway``", + "description": "[``botocore``] Update storagegateway client to latest version", + "type": "api-change" + }, + { + "category": "``route53``", + "description": "[``botocore``] Update route53 client to latest version", + "type": "api-change" + }, + { + "category": "``alexaforbusiness``", + "description": "[``botocore``] Update alexaforbusiness client to latest version", + "type": "api-change" + }, + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + }, + { + "category": "``mediaconnect``", + "description": "[``botocore``] Update mediaconnect client to latest version", + "type": "api-change" + }, + { + "category": "``textract``", + "description": "[``botocore``] Update textract client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.136.json b/.changes/1.9.136.json new file mode 100644 index 0000000..2ae6f73 --- /dev/null +++ b/.changes/1.9.136.json @@ -0,0 +1,32 @@ +[ + { + "category": "``gamelift``", + "description": "[``botocore``] Update gamelift client to latest version", + "type": "api-change" + }, + { + "category": "``workspaces``", + "description": "[``botocore``] Update workspaces client to latest version", + "type": "api-change" + }, + { + "category": "``dynamodb``", + "description": "[``botocore``] Update dynamodb client to latest version", + "type": "api-change" + }, + { + "category": "``inspector``", + "description": "[``botocore``] Update inspector client to latest version", + "type": "api-change" + }, + { + "category": "``lambda``", + "description": "[``botocore``] Update lambda client to latest version", + "type": "api-change" + }, + { + "category": "``batch``", + "description": "[``botocore``] Update batch client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.137.json b/.changes/1.9.137.json new file mode 100644 index 0000000..19aa286 --- /dev/null +++ b/.changes/1.9.137.json @@ -0,0 +1,12 @@ +[ + { + "category": "``iam``", + "description": "[``botocore``] Update iam client to latest version", + "type": "api-change" + }, + { + "category": "``sns``", + "description": "[``botocore``] Update sns client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.138.json b/.changes/1.9.138.json new file mode 100644 index 0000000..150d87f --- /dev/null +++ b/.changes/1.9.138.json @@ -0,0 +1,12 @@ +[ + { + "category": "``transfer``", + "description": "[``botocore``] Update transfer client to latest version", + "type": "api-change" + }, + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.139.json b/.changes/1.9.139.json new file mode 100644 index 0000000..364358f --- /dev/null +++ b/.changes/1.9.139.json @@ -0,0 +1,32 @@ +[ + { + "category": "``neptune``", + "description": "[``botocore``] Update neptune client to latest version", + "type": "api-change" + }, + { + "category": "``servicecatalog``", + "description": "[``botocore``] Update servicecatalog client to latest version", + "type": "api-change" + }, + { + "category": "``managedblockchain``", + "description": "[``botocore``] Update managedblockchain client to latest version", + "type": "api-change" + }, + { + "category": "``s3control``", + "description": "[``botocore``] Update s3control client to latest version", + "type": "api-change" + }, + { + "category": "``directconnect``", + "description": "[``botocore``] Update directconnect client to latest version", + "type": "api-change" + }, + { + "category": "``codepipeline``", + "description": "[``botocore``] Update codepipeline client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.140.json b/.changes/1.9.140.json new file mode 100644 index 0000000..f84f3d3 --- /dev/null +++ b/.changes/1.9.140.json @@ -0,0 +1,17 @@ +[ + { + "category": "``ecs``", + "description": "[``botocore``] Update ecs client to latest version", + "type": "api-change" + }, + { + "category": "``xray``", + "description": "[``botocore``] Update xray client to latest version", + "type": "api-change" + }, + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.141.json b/.changes/1.9.141.json new file mode 100644 index 0000000..e94f60d --- /dev/null +++ b/.changes/1.9.141.json @@ -0,0 +1,12 @@ +[ + { + "category": "``alexaforbusiness``", + "description": "[``botocore``] Update alexaforbusiness client to latest version", + "type": "api-change" + }, + { + "category": "``kms``", + "description": "[``botocore``] Update kms client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.142.json b/.changes/1.9.142.json new file mode 100644 index 0000000..e0a1f8c --- /dev/null +++ b/.changes/1.9.142.json @@ -0,0 +1,22 @@ +[ + { + "category": "``workmail``", + "description": "[``botocore``] Update workmail client to latest version", + "type": "api-change" + }, + { + "category": "``medialive``", + "description": "[``botocore``] Update medialive client to latest version", + "type": "api-change" + }, + { + "category": "``cognito-idp``", + "description": "[``botocore``] Update cognito-idp client to latest version", + "type": "api-change" + }, + { + "category": "``mediaconvert``", + "description": "[``botocore``] Update mediaconvert client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.143.json b/.changes/1.9.143.json new file mode 100644 index 0000000..308ce61 --- /dev/null +++ b/.changes/1.9.143.json @@ -0,0 +1,22 @@ +[ + { + "category": "``config``", + "description": "[``botocore``] Update config client to latest version", + "type": "api-change" + }, + { + "category": "``iam``", + "description": "[``botocore``] Update iam client to latest version", + "type": "api-change" + }, + { + "category": "``sts``", + "description": "[``botocore``] Update sts client to latest version", + "type": "api-change" + }, + { + "category": "``codepipeline``", + "description": "[``botocore``] Update codepipeline client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.144.json b/.changes/1.9.144.json new file mode 100644 index 0000000..f9003a6 --- /dev/null +++ b/.changes/1.9.144.json @@ -0,0 +1,22 @@ +[ + { + "category": "``appsync``", + "description": "[``botocore``] Update appsync client to latest version", + "type": "api-change" + }, + { + "category": "``storagegateway``", + "description": "[``botocore``] Update storagegateway client to latest version", + "type": "api-change" + }, + { + "category": "``ssm``", + "description": "[``botocore``] Update ssm client to latest version", + "type": "api-change" + }, + { + "category": "``alexaforbusiness``", + "description": "[``botocore``] Update alexaforbusiness client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.145.json b/.changes/1.9.145.json new file mode 100644 index 0000000..c1678e5 --- /dev/null +++ b/.changes/1.9.145.json @@ -0,0 +1,27 @@ +[ + { + "category": "``servicecatalog``", + "description": "[``botocore``] Update servicecatalog client to latest version", + "type": "api-change" + }, + { + "category": "``eks``", + "description": "[``botocore``] Update eks client to latest version", + "type": "api-change" + }, + { + "category": "``sagemaker``", + "description": "[``botocore``] Update sagemaker client to latest version", + "type": "api-change" + }, + { + "category": "``kinesisanalytics``", + "description": "[``botocore``] Update kinesisanalytics client to latest version", + "type": "api-change" + }, + { + "category": "``kinesisanalyticsv2``", + "description": "[``botocore``] Update kinesisanalyticsv2 client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.146.json b/.changes/1.9.146.json new file mode 100644 index 0000000..e6a8c99 --- /dev/null +++ b/.changes/1.9.146.json @@ -0,0 +1,12 @@ +[ + { + "category": "``glue``", + "description": "[``botocore``] Update glue client to latest version", + "type": "api-change" + }, + { + "category": "``sts``", + "description": "[``botocore``] Update sts client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.147.json b/.changes/1.9.147.json new file mode 100644 index 0000000..865f157 --- /dev/null +++ b/.changes/1.9.147.json @@ -0,0 +1,17 @@ +[ + { + "category": "``datasync``", + "description": "[``botocore``] Update datasync client to latest version", + "type": "api-change" + }, + { + "category": "``iotanalytics``", + "description": "[``botocore``] Update iotanalytics client to latest version", + "type": "api-change" + }, + { + "category": "``lambda``", + "description": "[``botocore``] Update lambda client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.148.json b/.changes/1.9.148.json new file mode 100644 index 0000000..49a2333 --- /dev/null +++ b/.changes/1.9.148.json @@ -0,0 +1,22 @@ +[ + { + "category": "``comprehend``", + "description": "[``botocore``] Update comprehend client to latest version", + "type": "api-change" + }, + { + "category": "``chime``", + "description": "[``botocore``] Update chime client to latest version", + "type": "api-change" + }, + { + "category": "``storagegateway``", + "description": "[``botocore``] Update storagegateway client to latest version", + "type": "api-change" + }, + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.149.json b/.changes/1.9.149.json new file mode 100644 index 0000000..f7c3699 --- /dev/null +++ b/.changes/1.9.149.json @@ -0,0 +1,32 @@ +[ + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + }, + { + "category": "``transcribe``", + "description": "[``botocore``] Update transcribe client to latest version", + "type": "api-change" + }, + { + "category": "``mediapackage``", + "description": "[``botocore``] Update mediapackage client to latest version", + "type": "api-change" + }, + { + "category": "``codepipeline``", + "description": "[``botocore``] Update codepipeline client to latest version", + "type": "api-change" + }, + { + "category": "Environment Variables", + "description": "[``botocore``] Ignore env var credentials is values are empty (`#1680 `__)", + "type": "enhancement" + }, + { + "category": "``rds``", + "description": "[``botocore``] Update rds client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.150.json b/.changes/1.9.150.json new file mode 100644 index 0000000..7247a46 --- /dev/null +++ b/.changes/1.9.150.json @@ -0,0 +1,12 @@ +[ + { + "category": "``medialive``", + "description": "[``botocore``] Update medialive client to latest version", + "type": "api-change" + }, + { + "category": "``s3``", + "description": "[``botocore``] Update s3 client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.151.json b/.changes/1.9.151.json new file mode 100644 index 0000000..cd90a3e --- /dev/null +++ b/.changes/1.9.151.json @@ -0,0 +1,7 @@ +[ + { + "category": "``appstream``", + "description": "[``botocore``] Update appstream client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.152.json b/.changes/1.9.152.json new file mode 100644 index 0000000..42481a1 --- /dev/null +++ b/.changes/1.9.152.json @@ -0,0 +1,17 @@ +[ + { + "category": "``kafka``", + "description": "[``botocore``] Update kafka client to latest version", + "type": "api-change" + }, + { + "category": "``meteringmarketplace``", + "description": "[``botocore``] Update meteringmarketplace client to latest version", + "type": "api-change" + }, + { + "category": "``mediapackage-vod``", + "description": "[``botocore``] Update mediapackage-vod client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.153.json b/.changes/1.9.153.json new file mode 100644 index 0000000..0c57394 --- /dev/null +++ b/.changes/1.9.153.json @@ -0,0 +1,12 @@ +[ + { + "category": "``datasync``", + "description": "[``botocore``] Update datasync client to latest version", + "type": "api-change" + }, + { + "category": "``alexaforbusiness``", + "description": "[``botocore``] Update alexaforbusiness client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.154.json b/.changes/1.9.154.json new file mode 100644 index 0000000..6d43bcf --- /dev/null +++ b/.changes/1.9.154.json @@ -0,0 +1,42 @@ +[ + { + "category": "``efs``", + "description": "[``botocore``] Update efs client to latest version", + "type": "api-change" + }, + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + }, + { + "category": "``apigateway``", + "description": "[``botocore``] Update apigateway client to latest version", + "type": "api-change" + }, + { + "category": "``worklink``", + "description": "[``botocore``] Update worklink client to latest version", + "type": "api-change" + }, + { + "category": "``rds``", + "description": "[``botocore``] Update rds client to latest version", + "type": "api-change" + }, + { + "category": "``servicecatalog``", + "description": "[``botocore``] Update servicecatalog client to latest version", + "type": "api-change" + }, + { + "category": "``devicefarm``", + "description": "[``botocore``] Update devicefarm client to latest version", + "type": "api-change" + }, + { + "category": "``budgets``", + "description": "[``botocore``] Update budgets client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.155.json b/.changes/1.9.155.json new file mode 100644 index 0000000..16cc421 --- /dev/null +++ b/.changes/1.9.155.json @@ -0,0 +1,12 @@ +[ + { + "category": "``waf-regional``", + "description": "[``botocore``] Update waf-regional client to latest version", + "type": "api-change" + }, + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.156.json b/.changes/1.9.156.json new file mode 100644 index 0000000..59fecec --- /dev/null +++ b/.changes/1.9.156.json @@ -0,0 +1,17 @@ +[ + { + "category": "``mediastore-data``", + "description": "[``botocore``] Update mediastore-data client to latest version", + "type": "api-change" + }, + { + "category": "``codedeploy``", + "description": "[``botocore``] Update codedeploy client to latest version", + "type": "api-change" + }, + { + "category": "``opsworkscm``", + "description": "[``botocore``] Update opsworkscm client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.157.json b/.changes/1.9.157.json new file mode 100644 index 0000000..4c34ce0 --- /dev/null +++ b/.changes/1.9.157.json @@ -0,0 +1,47 @@ +[ + { + "category": "``groundstation``", + "description": "[``botocore``] Update groundstation client to latest version", + "type": "api-change" + }, + { + "category": "``transcribe``", + "description": "[``botocore``] Update transcribe client to latest version", + "type": "api-change" + }, + { + "category": "``chime``", + "description": "[``botocore``] Update chime client to latest version", + "type": "api-change" + }, + { + "category": "``rds``", + "description": "[``botocore``] Update rds client to latest version", + "type": "api-change" + }, + { + "category": "``waf``", + "description": "[``botocore``] Update waf client to latest version", + "type": "api-change" + }, + { + "category": "``pinpoint-email``", + "description": "[``botocore``] Update pinpoint-email client to latest version", + "type": "api-change" + }, + { + "category": "``robomaker``", + "description": "[``botocore``] Update robomaker client to latest version", + "type": "api-change" + }, + { + "category": "``sts``", + "description": "[``botocore``] Update sts client to latest version", + "type": "api-change" + }, + { + "category": "``storagegateway``", + "description": "[``botocore``] Update storagegateway client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.158.json b/.changes/1.9.158.json new file mode 100644 index 0000000..f8dae55 --- /dev/null +++ b/.changes/1.9.158.json @@ -0,0 +1,32 @@ +[ + { + "category": "``ssm``", + "description": "[``botocore``] Update ssm client to latest version", + "type": "api-change" + }, + { + "category": "``securityhub``", + "description": "[``botocore``] Update securityhub client to latest version", + "type": "api-change" + }, + { + "category": "``iotthingsgraph``", + "description": "[``botocore``] Update iotthingsgraph client to latest version", + "type": "api-change" + }, + { + "category": "``dlm``", + "description": "[``botocore``] Update dlm client to latest version", + "type": "api-change" + }, + { + "category": "``rds``", + "description": "[``botocore``] Update rds client to latest version", + "type": "api-change" + }, + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.159.json b/.changes/1.9.159.json new file mode 100644 index 0000000..28389a7 --- /dev/null +++ b/.changes/1.9.159.json @@ -0,0 +1,47 @@ +[ + { + "category": "``iotevents-data``", + "description": "[``botocore``] Update iotevents-data client to latest version", + "type": "api-change" + }, + { + "category": "``iotevents``", + "description": "[``botocore``] Update iotevents client to latest version", + "type": "api-change" + }, + { + "category": "``pinpoint-email``", + "description": "[``botocore``] Update pinpoint-email client to latest version", + "type": "api-change" + }, + { + "category": "``iotanalytics``", + "description": "[``botocore``] Update iotanalytics client to latest version", + "type": "api-change" + }, + { + "category": "``codecommit``", + "description": "[``botocore``] Update codecommit client to latest version", + "type": "api-change" + }, + { + "category": "``rds-data``", + "description": "[``botocore``] Update rds-data client to latest version", + "type": "api-change" + }, + { + "category": "``rds``", + "description": "[``botocore``] Update rds client to latest version", + "type": "api-change" + }, + { + "category": "``servicecatalog``", + "description": "[``botocore``] Update servicecatalog client to latest version", + "type": "api-change" + }, + { + "category": "``kafka``", + "description": "[``botocore``] Update kafka client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.160.json b/.changes/1.9.160.json new file mode 100644 index 0000000..84c7b61 --- /dev/null +++ b/.changes/1.9.160.json @@ -0,0 +1,12 @@ +[ + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + }, + { + "category": "``rds``", + "description": "[``botocore``] Update rds client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.161.json b/.changes/1.9.161.json new file mode 100644 index 0000000..684252b --- /dev/null +++ b/.changes/1.9.161.json @@ -0,0 +1,27 @@ +[ + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + }, + { + "category": "``storagegateway``", + "description": "[``botocore``] Update storagegateway client to latest version", + "type": "api-change" + }, + { + "category": "``s3``", + "description": "[``botocore``] Update s3 client to latest version", + "type": "api-change" + }, + { + "category": "``elasticache``", + "description": "[``botocore``] Update elasticache client to latest version", + "type": "api-change" + }, + { + "category": "``iam``", + "description": "[``botocore``] Update iam client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.162.json b/.changes/1.9.162.json new file mode 100644 index 0000000..5b3e60f --- /dev/null +++ b/.changes/1.9.162.json @@ -0,0 +1,7 @@ +[ + { + "category": "``glue``", + "description": "[``botocore``] Update glue client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.163.json b/.changes/1.9.163.json new file mode 100644 index 0000000..04802bd --- /dev/null +++ b/.changes/1.9.163.json @@ -0,0 +1,42 @@ +[ + { + "category": "``ecs``", + "description": "[``botocore``] Update ecs client to latest version", + "type": "api-change" + }, + { + "category": "``organizations``", + "description": "[``botocore``] Update organizations client to latest version", + "type": "api-change" + }, + { + "category": "``logs``", + "description": "[``botocore``] Update logs client to latest version", + "type": "api-change" + }, + { + "category": "``dynamodb``", + "description": "[``botocore``] Update dynamodb client to latest version", + "type": "api-change" + }, + { + "category": "``guardduty``", + "description": "[``botocore``] Update guardduty client to latest version", + "type": "api-change" + }, + { + "category": "``ssm``", + "description": "[``botocore``] Update ssm client to latest version", + "type": "api-change" + }, + { + "category": "``ses``", + "description": "[``botocore``] Update ses client to latest version", + "type": "api-change" + }, + { + "category": "``mediaconnect``", + "description": "[``botocore``] Update mediaconnect client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.164.json b/.changes/1.9.164.json new file mode 100644 index 0000000..4566b5e --- /dev/null +++ b/.changes/1.9.164.json @@ -0,0 +1,7 @@ +[ + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.165.json b/.changes/1.9.165.json new file mode 100644 index 0000000..d890ed1 --- /dev/null +++ b/.changes/1.9.165.json @@ -0,0 +1,27 @@ +[ + { + "category": "``codebuild``", + "description": "[``botocore``] Update codebuild client to latest version", + "type": "api-change" + }, + { + "category": "``personalize-runtime``", + "description": "[``botocore``] Update personalize-runtime client to latest version", + "type": "api-change" + }, + { + "category": "``codecommit``", + "description": "[``botocore``] Update codecommit client to latest version", + "type": "api-change" + }, + { + "category": "``personalize-events``", + "description": "[``botocore``] Update personalize-events client to latest version", + "type": "api-change" + }, + { + "category": "``personalize``", + "description": "[``botocore``] Update personalize client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.166.json b/.changes/1.9.166.json new file mode 100644 index 0000000..7239659 --- /dev/null +++ b/.changes/1.9.166.json @@ -0,0 +1,7 @@ +[ + { + "category": "``sagemaker``", + "description": "[``botocore``] Update sagemaker client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.167.json b/.changes/1.9.167.json new file mode 100644 index 0000000..f38b4e6 --- /dev/null +++ b/.changes/1.9.167.json @@ -0,0 +1,7 @@ +[ + { + "category": "``servicecatalog``", + "description": "[``botocore``] Update servicecatalog client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.168.json b/.changes/1.9.168.json new file mode 100644 index 0000000..b791e3b --- /dev/null +++ b/.changes/1.9.168.json @@ -0,0 +1,22 @@ +[ + { + "category": "``appmesh``", + "description": "[``botocore``] Update appmesh client to latest version", + "type": "api-change" + }, + { + "category": "``elasticache``", + "description": "[``botocore``] Update elasticache client to latest version", + "type": "api-change" + }, + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + }, + { + "category": "``guardduty``", + "description": "[``botocore``] Update guardduty client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.169.json b/.changes/1.9.169.json new file mode 100644 index 0000000..cbc80ea --- /dev/null +++ b/.changes/1.9.169.json @@ -0,0 +1,22 @@ +[ + { + "category": "``cloudfront``", + "description": "[``botocore``] Update cloudfront client to latest version", + "type": "api-change" + }, + { + "category": "``personalize``", + "description": "[``botocore``] Update personalize client to latest version", + "type": "api-change" + }, + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + }, + { + "category": "``appstream``", + "description": "[``botocore``] Update appstream client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.170.json b/.changes/1.9.170.json new file mode 100644 index 0000000..93134a8 --- /dev/null +++ b/.changes/1.9.170.json @@ -0,0 +1,22 @@ +[ + { + "category": "``neptune``", + "description": "[``botocore``] Update neptune client to latest version", + "type": "api-change" + }, + { + "category": "``servicecatalog``", + "description": "[``botocore``] Update servicecatalog client to latest version", + "type": "api-change" + }, + { + "category": "``robomaker``", + "description": "[``botocore``] Update robomaker client to latest version", + "type": "api-change" + }, + { + "category": "Paginator", + "description": "[``botocore``] Fixes a bug where pagination tokens with three consecutive underscores would result in a parsing failure. Resolves boto/boto3`#1984 `__.", + "type": "bugfix" + } +] \ No newline at end of file diff --git a/.changes/1.9.171.json b/.changes/1.9.171.json new file mode 100644 index 0000000..34f4d13 --- /dev/null +++ b/.changes/1.9.171.json @@ -0,0 +1,12 @@ +[ + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + }, + { + "category": "``resourcegroupstaggingapi``", + "description": "[``botocore``] Update resourcegroupstaggingapi client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.172.json b/.changes/1.9.172.json new file mode 100644 index 0000000..24cbb41 --- /dev/null +++ b/.changes/1.9.172.json @@ -0,0 +1,7 @@ +[ + { + "category": "``eks``", + "description": "[``botocore``] Update eks client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.173.json b/.changes/1.9.173.json new file mode 100644 index 0000000..8880cd2 --- /dev/null +++ b/.changes/1.9.173.json @@ -0,0 +1,32 @@ +[ + { + "category": "``health``", + "description": "[``botocore``] Update health client to latest version", + "type": "api-change" + }, + { + "category": "``glue``", + "description": "[``botocore``] Update glue client to latest version", + "type": "api-change" + }, + { + "category": "``iotevents-data``", + "description": "[``botocore``] Update iotevents-data client to latest version", + "type": "api-change" + }, + { + "category": "``opsworks``", + "description": "[``botocore``] Update opsworks client to latest version", + "type": "api-change" + }, + { + "category": "``rds``", + "description": "[``botocore``] Update rds client to latest version", + "type": "api-change" + }, + { + "category": "``acm-pca``", + "description": "[``botocore``] Update acm-pca client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.174.json b/.changes/1.9.174.json new file mode 100644 index 0000000..4c0094c --- /dev/null +++ b/.changes/1.9.174.json @@ -0,0 +1,22 @@ +[ + { + "category": "``devicefarm``", + "description": "[``botocore``] Update devicefarm client to latest version", + "type": "api-change" + }, + { + "category": "``iam``", + "description": "[``botocore``] Update iam client to latest version", + "type": "api-change" + }, + { + "category": "``mediapackage``", + "description": "[``botocore``] Update mediapackage client to latest version", + "type": "api-change" + }, + { + "category": "``kinesis-video-media``", + "description": "[``botocore``] Update kinesis-video-media client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.175.json b/.changes/1.9.175.json new file mode 100644 index 0000000..dbbaad9 --- /dev/null +++ b/.changes/1.9.175.json @@ -0,0 +1,47 @@ +[ + { + "category": "``application-insights``", + "description": "[``botocore``] Update application-insights client to latest version", + "type": "api-change" + }, + { + "category": "``securityhub``", + "description": "[``botocore``] Update securityhub client to latest version", + "type": "api-change" + }, + { + "category": "``apigateway``", + "description": "[``botocore``] Update apigateway client to latest version", + "type": "api-change" + }, + { + "category": "``elbv2``", + "description": "[``botocore``] Update elbv2 client to latest version", + "type": "api-change" + }, + { + "category": "``fsx``", + "description": "[``botocore``] Update fsx client to latest version", + "type": "api-change" + }, + { + "category": "``service-quotas``", + "description": "[``botocore``] Update service-quotas client to latest version", + "type": "api-change" + }, + { + "category": "``resourcegroupstaggingapi``", + "description": "[``botocore``] Update resourcegroupstaggingapi client to latest version", + "type": "api-change" + }, + { + "category": "``ssm``", + "description": "[``botocore``] Update ssm client to latest version", + "type": "api-change" + }, + { + "category": "``apigatewayv2``", + "description": "[``botocore``] Update apigatewayv2 client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.176.json b/.changes/1.9.176.json new file mode 100644 index 0000000..787771f --- /dev/null +++ b/.changes/1.9.176.json @@ -0,0 +1,12 @@ +[ + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + }, + { + "category": "``eks``", + "description": "[``botocore``] Update eks client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.177.json b/.changes/1.9.177.json new file mode 100644 index 0000000..297f333 --- /dev/null +++ b/.changes/1.9.177.json @@ -0,0 +1,12 @@ +[ + { + "category": "``codecommit``", + "description": "[``botocore``] Update codecommit client to latest version", + "type": "api-change" + }, + { + "category": "``apigatewayv2``", + "description": "[``botocore``] Update apigatewayv2 client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.178.json b/.changes/1.9.178.json new file mode 100644 index 0000000..f3337a3 --- /dev/null +++ b/.changes/1.9.178.json @@ -0,0 +1,7 @@ +[ + { + "category": "``dynamodb``", + "description": "[``botocore``] Update dynamodb client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.179.json b/.changes/1.9.179.json new file mode 100644 index 0000000..ae950c3 --- /dev/null +++ b/.changes/1.9.179.json @@ -0,0 +1,22 @@ +[ + { + "category": "``directconnect``", + "description": "[``botocore``] Update directconnect client to latest version", + "type": "api-change" + }, + { + "category": "``pinpoint``", + "description": "[``botocore``] Update pinpoint client to latest version", + "type": "api-change" + }, + { + "category": "``workspaces``", + "description": "[``botocore``] Update workspaces client to latest version", + "type": "api-change" + }, + { + "category": "``ec2-instance-connect``", + "description": "[``botocore``] Update ec2-instance-connect client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.180.json b/.changes/1.9.180.json new file mode 100644 index 0000000..c473ce8 --- /dev/null +++ b/.changes/1.9.180.json @@ -0,0 +1,22 @@ +[ + { + "category": "``alexaforbusiness``", + "description": "[``botocore``] Update alexaforbusiness client to latest version", + "type": "api-change" + }, + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + }, + { + "category": "``redshift``", + "description": "[``botocore``] Update redshift client to latest version", + "type": "api-change" + }, + { + "category": "``workspaces``", + "description": "[``botocore``] Update workspaces client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.181.json b/.changes/1.9.181.json new file mode 100644 index 0000000..2d4453a --- /dev/null +++ b/.changes/1.9.181.json @@ -0,0 +1,22 @@ +[ + { + "category": "``docdb``", + "description": "[``botocore``] Update docdb client to latest version", + "type": "api-change" + }, + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + }, + { + "category": "``organizations``", + "description": "[``botocore``] Update organizations client to latest version", + "type": "api-change" + }, + { + "category": "``rds``", + "description": "[``botocore``] Update rds client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.182.json b/.changes/1.9.182.json new file mode 100644 index 0000000..b39f990 --- /dev/null +++ b/.changes/1.9.182.json @@ -0,0 +1,17 @@ +[ + { + "category": "CSM", + "description": "[``botocore``] Support configuration of the host used in client side metrics via AWS_CSM_HOST", + "type": "enhancement" + }, + { + "category": "``appstream``", + "description": "[``botocore``] Update appstream client to latest version", + "type": "api-change" + }, + { + "category": "``mediastore``", + "description": "[``botocore``] Update mediastore client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.183.json b/.changes/1.9.183.json new file mode 100644 index 0000000..0e8931d --- /dev/null +++ b/.changes/1.9.183.json @@ -0,0 +1,22 @@ +[ + { + "category": "``swf``", + "description": "[``botocore``] Update swf client to latest version", + "type": "api-change" + }, + { + "category": "``rds``", + "description": "[``botocore``] Update rds client to latest version", + "type": "api-change" + }, + { + "category": "``s3``", + "description": "[``botocore``] Update s3 client to latest version", + "type": "api-change" + }, + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.184.json b/.changes/1.9.184.json new file mode 100644 index 0000000..4ac0795 --- /dev/null +++ b/.changes/1.9.184.json @@ -0,0 +1,7 @@ +[ + { + "category": "``ce``", + "description": "[``botocore``] Update ce client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.185.json b/.changes/1.9.185.json new file mode 100644 index 0000000..5d05dee --- /dev/null +++ b/.changes/1.9.185.json @@ -0,0 +1,47 @@ +[ + { + "category": "``efs``", + "description": "[``botocore``] Update efs client to latest version", + "type": "api-change" + }, + { + "category": "``cloudwatch``", + "description": "[``botocore``] Update cloudwatch client to latest version", + "type": "api-change" + }, + { + "category": "``amplify``", + "description": "[``botocore``] Update amplify client to latest version", + "type": "api-change" + }, + { + "category": "``kinesis-video-archived-media``", + "description": "[``botocore``] Update kinesis-video-archived-media client to latest version", + "type": "api-change" + }, + { + "category": "``gamelift``", + "description": "[``botocore``] Update gamelift client to latest version", + "type": "api-change" + }, + { + "category": "``kinesisvideo``", + "description": "[``botocore``] Update kinesisvideo client to latest version", + "type": "api-change" + }, + { + "category": "``waf``", + "description": "[``botocore``] Update waf client to latest version", + "type": "api-change" + }, + { + "category": "``config``", + "description": "[``botocore``] Update config client to latest version", + "type": "api-change" + }, + { + "category": "``waf-regional``", + "description": "[``botocore``] Update waf-regional client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.186.json b/.changes/1.9.186.json new file mode 100644 index 0000000..b3fd369 --- /dev/null +++ b/.changes/1.9.186.json @@ -0,0 +1,17 @@ +[ + { + "category": "``quicksight``", + "description": "[``botocore``] Update quicksight client to latest version", + "type": "api-change" + }, + { + "category": "``glacier``", + "description": "[``botocore``] Update glacier client to latest version", + "type": "api-change" + }, + { + "category": "``servicecatalog``", + "description": "[``botocore``] Update servicecatalog client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.187.json b/.changes/1.9.187.json new file mode 100644 index 0000000..6cbf5fc --- /dev/null +++ b/.changes/1.9.187.json @@ -0,0 +1,7 @@ +[ + { + "category": "``events``", + "description": "[``botocore``] Update events client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.188.json b/.changes/1.9.188.json new file mode 100644 index 0000000..97f121b --- /dev/null +++ b/.changes/1.9.188.json @@ -0,0 +1,22 @@ +[ + { + "category": "``iam``", + "description": "[``botocore``] Update iam client to latest version", + "type": "api-change" + }, + { + "category": "``apigatewayv2``", + "description": "[``botocore``] Update apigatewayv2 client to latest version", + "type": "api-change" + }, + { + "category": "``robomaker``", + "description": "[``botocore``] Update robomaker client to latest version", + "type": "api-change" + }, + { + "category": "``es``", + "description": "[``botocore``] Update es client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.189.json b/.changes/1.9.189.json new file mode 100644 index 0000000..9b4fe5e --- /dev/null +++ b/.changes/1.9.189.json @@ -0,0 +1,17 @@ +[ + { + "category": "``config``", + "description": "[``botocore``] Update config client to latest version", + "type": "api-change" + }, + { + "category": "``dms``", + "description": "[``botocore``] Update dms client to latest version", + "type": "api-change" + }, + { + "category": "``autoscaling``", + "description": "[``botocore``] Update autoscaling client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.190.json b/.changes/1.9.190.json new file mode 100644 index 0000000..9b5986b --- /dev/null +++ b/.changes/1.9.190.json @@ -0,0 +1,22 @@ +[ + { + "category": "``comprehend``", + "description": "[``botocore``] Update comprehend client to latest version", + "type": "api-change" + }, + { + "category": "``codedeploy``", + "description": "[``botocore``] Update codedeploy client to latest version", + "type": "api-change" + }, + { + "category": "``elasticache``", + "description": "[``botocore``] Update elasticache client to latest version", + "type": "api-change" + }, + { + "category": "``ecs``", + "description": "[``botocore``] Update ecs client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.191.json b/.changes/1.9.191.json new file mode 100644 index 0000000..e40b7d1 --- /dev/null +++ b/.changes/1.9.191.json @@ -0,0 +1,12 @@ +[ + { + "category": "``sqs``", + "description": "[``botocore``] Update sqs client to latest version", + "type": "api-change" + }, + { + "category": "``iotevents``", + "description": "[``botocore``] Update iotevents client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.192.json b/.changes/1.9.192.json new file mode 100644 index 0000000..00b8246 --- /dev/null +++ b/.changes/1.9.192.json @@ -0,0 +1,7 @@ +[ + { + "category": "Dependency", + "description": "[``botocore``] Fixed dependency issue with broken docutils aws/aws-cli`#4332 `__", + "type": "bugfix" + } +] \ No newline at end of file diff --git a/.changes/1.9.193.json b/.changes/1.9.193.json new file mode 100644 index 0000000..d33cf84 --- /dev/null +++ b/.changes/1.9.193.json @@ -0,0 +1,12 @@ +[ + { + "category": "``mq``", + "description": "[``botocore``] Update mq client to latest version", + "type": "api-change" + }, + { + "category": "``shield``", + "description": "[``botocore``] Update shield client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.194.json b/.changes/1.9.194.json new file mode 100644 index 0000000..5569f64 --- /dev/null +++ b/.changes/1.9.194.json @@ -0,0 +1,12 @@ +[ + { + "category": "``ssm``", + "description": "[``botocore``] Update ssm client to latest version", + "type": "api-change" + }, + { + "category": "``secretsmanager``", + "description": "[``botocore``] Update secretsmanager client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.195.json b/.changes/1.9.195.json new file mode 100644 index 0000000..e2c0382 --- /dev/null +++ b/.changes/1.9.195.json @@ -0,0 +1,22 @@ +[ + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + }, + { + "category": "``sts``", + "description": "[``botocore``] Update sts client to latest version", + "type": "api-change" + }, + { + "category": "``pinpoint``", + "description": "[``botocore``] Update pinpoint client to latest version", + "type": "api-change" + }, + { + "category": "``glue``", + "description": "[``botocore``] Update glue client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.196.json b/.changes/1.9.196.json new file mode 100644 index 0000000..08c9009 --- /dev/null +++ b/.changes/1.9.196.json @@ -0,0 +1,17 @@ +[ + { + "category": "``medialive``", + "description": "[``botocore``] Update medialive client to latest version", + "type": "api-change" + }, + { + "category": "``ecr``", + "description": "[``botocore``] Update ecr client to latest version", + "type": "api-change" + }, + { + "category": "``mediaconvert``", + "description": "[``botocore``] Update mediaconvert client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.197.json b/.changes/1.9.197.json new file mode 100644 index 0000000..2b68646 --- /dev/null +++ b/.changes/1.9.197.json @@ -0,0 +1,37 @@ +[ + { + "category": "``ce``", + "description": "[``botocore``] Update ce client to latest version", + "type": "api-change" + }, + { + "category": "``greengrass``", + "description": "[``botocore``] Update greengrass client to latest version", + "type": "api-change" + }, + { + "category": "``glue``", + "description": "[``botocore``] Update glue client to latest version", + "type": "api-change" + }, + { + "category": "``logs``", + "description": "[``botocore``] Update logs client to latest version", + "type": "api-change" + }, + { + "category": "``mediaconnect``", + "description": "[``botocore``] Update mediaconnect client to latest version", + "type": "api-change" + }, + { + "category": "``batch``", + "description": "[``botocore``] Update batch client to latest version", + "type": "api-change" + }, + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.198.json b/.changes/1.9.198.json new file mode 100644 index 0000000..a6e9d02 --- /dev/null +++ b/.changes/1.9.198.json @@ -0,0 +1,12 @@ +[ + { + "category": "S3", + "description": "[``botocore``] Fix an issue that would cause S3 list_object_versions to sometimes fail parsing responses with certain key values.", + "type": "bugfix" + }, + { + "category": "``codecommit``", + "description": "[``botocore``] Update codecommit client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.199.json b/.changes/1.9.199.json new file mode 100644 index 0000000..3bb32b3 --- /dev/null +++ b/.changes/1.9.199.json @@ -0,0 +1,17 @@ +[ + { + "category": "``polly``", + "description": "[``botocore``] Update polly client to latest version", + "type": "api-change" + }, + { + "category": "``mediaconvert``", + "description": "[``botocore``] Update mediaconvert client to latest version", + "type": "api-change" + }, + { + "category": "``route53``", + "description": "[``botocore``] Update route53 client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.200.json b/.changes/1.9.200.json new file mode 100644 index 0000000..1ff0239 --- /dev/null +++ b/.changes/1.9.200.json @@ -0,0 +1,12 @@ +[ + { + "category": "``sts``", + "description": "[``botocore``] Update sts client to latest version", + "type": "api-change" + }, + { + "category": "Credentials", + "description": "[``botocore``] Add support for a credential provider that handles resolving credentials via STS AssumeRoleWithWebIdentity", + "type": "enhancement" + } +] \ No newline at end of file diff --git a/.changes/1.9.201.json b/.changes/1.9.201.json new file mode 100644 index 0000000..1a2d1a7 --- /dev/null +++ b/.changes/1.9.201.json @@ -0,0 +1,17 @@ +[ + { + "category": "``datasync``", + "description": "[``botocore``] Update datasync client to latest version", + "type": "api-change" + }, + { + "category": "``iot``", + "description": "[``botocore``] Update iot client to latest version", + "type": "api-change" + }, + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.202.json b/.changes/1.9.202.json new file mode 100644 index 0000000..4d3f0cb --- /dev/null +++ b/.changes/1.9.202.json @@ -0,0 +1,7 @@ +[ + { + "category": "``batch``", + "description": "[``botocore``] Update batch client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.203.json b/.changes/1.9.203.json new file mode 100644 index 0000000..9e6f851 --- /dev/null +++ b/.changes/1.9.203.json @@ -0,0 +1,7 @@ +[ + { + "category": "``application-insights``", + "description": "[``botocore``] Update application-insights client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.204.json b/.changes/1.9.204.json new file mode 100644 index 0000000..5e87991 --- /dev/null +++ b/.changes/1.9.204.json @@ -0,0 +1,22 @@ +[ + { + "category": "``lakeformation``", + "description": "[``botocore``] Update lakeformation client to latest version", + "type": "api-change" + }, + { + "category": "``opsworkscm``", + "description": "[``botocore``] Update opsworkscm client to latest version", + "type": "api-change" + }, + { + "category": "``glue``", + "description": "[``botocore``] Update glue client to latest version", + "type": "api-change" + }, + { + "category": "``codebuild``", + "description": "[``botocore``] Update codebuild client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.205.json b/.changes/1.9.205.json new file mode 100644 index 0000000..88f7a58 --- /dev/null +++ b/.changes/1.9.205.json @@ -0,0 +1,27 @@ +[ + { + "category": "``guardduty``", + "description": "[``botocore``] Update guardduty client to latest version", + "type": "api-change" + }, + { + "category": "``lex-runtime``", + "description": "[``botocore``] Update lex-runtime client to latest version", + "type": "api-change" + }, + { + "category": "``redshift``", + "description": "[``botocore``] Update redshift client to latest version", + "type": "api-change" + }, + { + "category": "``iot``", + "description": "[``botocore``] Update iot client to latest version", + "type": "api-change" + }, + { + "category": "``mediaconvert``", + "description": "[``botocore``] Update mediaconvert client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.206.json b/.changes/1.9.206.json new file mode 100644 index 0000000..d1d0a98 --- /dev/null +++ b/.changes/1.9.206.json @@ -0,0 +1,22 @@ +[ + { + "category": "``autoscaling``", + "description": "[``botocore``] Update autoscaling client to latest version", + "type": "api-change" + }, + { + "category": "``cloudwatch``", + "description": "[``botocore``] Update cloudwatch client to latest version", + "type": "api-change" + }, + { + "category": "``application-autoscaling``", + "description": "[``botocore``] Update application-autoscaling client to latest version", + "type": "api-change" + }, + { + "category": "``rekognition``", + "description": "[``botocore``] Update rekognition client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.207.json b/.changes/1.9.207.json new file mode 100644 index 0000000..b190739 --- /dev/null +++ b/.changes/1.9.207.json @@ -0,0 +1,7 @@ +[ + { + "category": "``appsync``", + "description": "[``botocore``] Update appsync client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.208.json b/.changes/1.9.208.json new file mode 100644 index 0000000..4566b5e --- /dev/null +++ b/.changes/1.9.208.json @@ -0,0 +1,7 @@ +[ + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.209.json b/.changes/1.9.209.json new file mode 100644 index 0000000..a50d05d --- /dev/null +++ b/.changes/1.9.209.json @@ -0,0 +1,32 @@ +[ + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + }, + { + "category": "``appmesh``", + "description": "[``botocore``] Update appmesh client to latest version", + "type": "api-change" + }, + { + "category": "``athena``", + "description": "[``botocore``] Update athena client to latest version", + "type": "api-change" + }, + { + "category": "``codecommit``", + "description": "[``botocore``] Update codecommit client to latest version", + "type": "api-change" + }, + { + "category": "``glue``", + "description": "[``botocore``] Update glue client to latest version", + "type": "api-change" + }, + { + "category": "``storagegateway``", + "description": "[``botocore``] Update storagegateway client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.210.json b/.changes/1.9.210.json new file mode 100644 index 0000000..94dab1d --- /dev/null +++ b/.changes/1.9.210.json @@ -0,0 +1,17 @@ +[ + { + "category": "``robomaker``", + "description": "[``botocore``] Update robomaker client to latest version", + "type": "api-change" + }, + { + "category": "``emr``", + "description": "[``botocore``] Update emr client to latest version", + "type": "api-change" + }, + { + "category": "``ecs``", + "description": "[``botocore``] Update ecs client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.211.json b/.changes/1.9.211.json new file mode 100644 index 0000000..a19f77a --- /dev/null +++ b/.changes/1.9.211.json @@ -0,0 +1,12 @@ +[ + { + "category": "``appmesh``", + "description": "[``botocore``] Update appmesh client to latest version", + "type": "api-change" + }, + { + "category": "``cur``", + "description": "[``botocore``] Update cur client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.212.json b/.changes/1.9.212.json new file mode 100644 index 0000000..31d8d4a --- /dev/null +++ b/.changes/1.9.212.json @@ -0,0 +1,22 @@ +[ + { + "category": "``sagemaker``", + "description": "[``botocore``] Update sagemaker client to latest version", + "type": "api-change" + }, + { + "category": "``transfer``", + "description": "[``botocore``] Update transfer client to latest version", + "type": "api-change" + }, + { + "category": "``appstream``", + "description": "[``botocore``] Update appstream client to latest version", + "type": "api-change" + }, + { + "category": "``alexaforbusiness``", + "description": "[``botocore``] Update alexaforbusiness client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.213.json b/.changes/1.9.213.json new file mode 100644 index 0000000..a9468e1 --- /dev/null +++ b/.changes/1.9.213.json @@ -0,0 +1,37 @@ +[ + { + "category": "``forecast``", + "description": "[``botocore``] Update forecast client to latest version", + "type": "api-change" + }, + { + "category": "``forecastquery``", + "description": "[``botocore``] Update forecastquery client to latest version", + "type": "api-change" + }, + { + "category": "``personalize-runtime``", + "description": "[``botocore``] Update personalize-runtime client to latest version", + "type": "api-change" + }, + { + "category": "``elasticache``", + "description": "[``botocore``] Update elasticache client to latest version", + "type": "api-change" + }, + { + "category": "``rekognition``", + "description": "[``botocore``] Update rekognition client to latest version", + "type": "api-change" + }, + { + "category": "``sagemaker``", + "description": "[``botocore``] Update sagemaker client to latest version", + "type": "api-change" + }, + { + "category": "``sqs``", + "description": "[``botocore``] Update sqs client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.214.json b/.changes/1.9.214.json new file mode 100644 index 0000000..0c25305 --- /dev/null +++ b/.changes/1.9.214.json @@ -0,0 +1,12 @@ +[ + { + "category": "``datasync``", + "description": "[``botocore``] Update datasync client to latest version", + "type": "api-change" + }, + { + "category": "``rds``", + "description": "[``botocore``] Update rds client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.215.json b/.changes/1.9.215.json new file mode 100644 index 0000000..3505fa1 --- /dev/null +++ b/.changes/1.9.215.json @@ -0,0 +1,17 @@ +[ + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + }, + { + "category": "``mediapackage-vod``", + "description": "[``botocore``] Update mediapackage-vod client to latest version", + "type": "api-change" + }, + { + "category": "``transcribe``", + "description": "[``botocore``] Update transcribe client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.216.json b/.changes/1.9.216.json new file mode 100644 index 0000000..80ed97b --- /dev/null +++ b/.changes/1.9.216.json @@ -0,0 +1,12 @@ +[ + { + "category": "``ssm``", + "description": "[``botocore``] Update ssm client to latest version", + "type": "api-change" + }, + { + "category": "``securityhub``", + "description": "[``botocore``] Update securityhub client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.217.json b/.changes/1.9.217.json new file mode 100644 index 0000000..b62bd04 --- /dev/null +++ b/.changes/1.9.217.json @@ -0,0 +1,7 @@ +[ + { + "category": "``organizations``", + "description": "[``botocore``] Update organizations client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.218.json b/.changes/1.9.218.json new file mode 100644 index 0000000..43fe60a --- /dev/null +++ b/.changes/1.9.218.json @@ -0,0 +1,17 @@ +[ + { + "category": "``sqs``", + "description": "[``botocore``] Update sqs client to latest version", + "type": "api-change" + }, + { + "category": "``globalaccelerator``", + "description": "[``botocore``] Update globalaccelerator client to latest version", + "type": "api-change" + }, + { + "category": "``mediaconvert``", + "description": "[``botocore``] Update mediaconvert client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.219.json b/.changes/1.9.219.json new file mode 100644 index 0000000..9de459b --- /dev/null +++ b/.changes/1.9.219.json @@ -0,0 +1,27 @@ +[ + { + "category": "``codepipeline``", + "description": "[``botocore``] Update codepipeline client to latest version", + "type": "api-change" + }, + { + "category": "``application-autoscaling``", + "description": "[``botocore``] Update application-autoscaling client to latest version", + "type": "api-change" + }, + { + "category": "``elasticache``", + "description": "[``botocore``] Update elasticache client to latest version", + "type": "api-change" + }, + { + "category": "``lambda``", + "description": "[``botocore``] Update lambda client to latest version", + "type": "api-change" + }, + { + "category": "``ecs``", + "description": "[``botocore``] Update ecs client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.220.json b/.changes/1.9.220.json new file mode 100644 index 0000000..d4e049a --- /dev/null +++ b/.changes/1.9.220.json @@ -0,0 +1,17 @@ +[ + { + "category": "``mq``", + "description": "[``botocore``] Update mq client to latest version", + "type": "api-change" + }, + { + "category": "``apigatewaymanagementapi``", + "description": "[``botocore``] Update apigatewaymanagementapi client to latest version", + "type": "api-change" + }, + { + "category": "``ecs``", + "description": "[``botocore``] Update ecs client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.221.json b/.changes/1.9.221.json new file mode 100644 index 0000000..0433077 --- /dev/null +++ b/.changes/1.9.221.json @@ -0,0 +1,17 @@ +[ + { + "category": "``ecs``", + "description": "[``botocore``] Update ecs client to latest version", + "type": "api-change" + }, + { + "category": "``resourcegroupstaggingapi``", + "description": "[``botocore``] Update resourcegroupstaggingapi client to latest version", + "type": "api-change" + }, + { + "category": "``gamelift``", + "description": "[``botocore``] Update gamelift client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.222.json b/.changes/1.9.222.json new file mode 100644 index 0000000..afe0fbb --- /dev/null +++ b/.changes/1.9.222.json @@ -0,0 +1,17 @@ +[ + { + "category": "``stepfunctions``", + "description": "[``botocore``] Update stepfunctions client to latest version", + "type": "api-change" + }, + { + "category": "``transcribe``", + "description": "[``botocore``] Update transcribe client to latest version", + "type": "api-change" + }, + { + "category": "``eks``", + "description": "[``botocore``] Update eks client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.223.json b/.changes/1.9.223.json new file mode 100644 index 0000000..291b453 --- /dev/null +++ b/.changes/1.9.223.json @@ -0,0 +1,7 @@ +[ + { + "category": "``config``", + "description": "[``botocore``] Update config client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.224.json b/.changes/1.9.224.json new file mode 100644 index 0000000..d016c35 --- /dev/null +++ b/.changes/1.9.224.json @@ -0,0 +1,7 @@ +[ + { + "category": "``kinesisanalytics``", + "description": "[``botocore``] Update kinesisanalytics client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.225.json b/.changes/1.9.225.json new file mode 100644 index 0000000..fa608c9 --- /dev/null +++ b/.changes/1.9.225.json @@ -0,0 +1,37 @@ +[ + { + "category": "``qldb``", + "description": "[``botocore``] Update qldb client to latest version", + "type": "api-change" + }, + { + "category": "``marketplacecommerceanalytics``", + "description": "[``botocore``] Update marketplacecommerceanalytics client to latest version", + "type": "api-change" + }, + { + "category": "``appstream``", + "description": "[``botocore``] Update appstream client to latest version", + "type": "api-change" + }, + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + }, + { + "category": "``robomaker``", + "description": "[``botocore``] Update robomaker client to latest version", + "type": "api-change" + }, + { + "category": "``appmesh``", + "description": "[``botocore``] Update appmesh client to latest version", + "type": "api-change" + }, + { + "category": "``qldb-session``", + "description": "[``botocore``] Update qldb-session client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.226.json b/.changes/1.9.226.json new file mode 100644 index 0000000..05bda38 --- /dev/null +++ b/.changes/1.9.226.json @@ -0,0 +1,7 @@ +[ + { + "category": "``storagegateway``", + "description": "[``botocore``] Update storagegateway client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.227.json b/.changes/1.9.227.json new file mode 100644 index 0000000..3ad7086 --- /dev/null +++ b/.changes/1.9.227.json @@ -0,0 +1,32 @@ +[ + { + "category": "``stepfunctions``", + "description": "[``botocore``] Update stepfunctions client to latest version", + "type": "api-change" + }, + { + "category": "``rds``", + "description": "[``botocore``] Update rds client to latest version", + "type": "api-change" + }, + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + }, + { + "category": "``mediaconnect``", + "description": "[``botocore``] Update mediaconnect client to latest version", + "type": "api-change" + }, + { + "category": "``ses``", + "description": "[``botocore``] Update ses client to latest version", + "type": "api-change" + }, + { + "category": "``config``", + "description": "[``botocore``] Update config client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.228.json b/.changes/1.9.228.json new file mode 100644 index 0000000..2d36ab2 --- /dev/null +++ b/.changes/1.9.228.json @@ -0,0 +1,22 @@ +[ + { + "category": "``elbv2``", + "description": "[``botocore``] Update elbv2 client to latest version", + "type": "api-change" + }, + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + }, + { + "category": "``workmailmessageflow``", + "description": "[``botocore``] Update workmailmessageflow client to latest version", + "type": "api-change" + }, + { + "category": "``medialive``", + "description": "[``botocore``] Update medialive client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.229.json b/.changes/1.9.229.json new file mode 100644 index 0000000..a90c8dc --- /dev/null +++ b/.changes/1.9.229.json @@ -0,0 +1,12 @@ +[ + { + "category": "``eks``", + "description": "[``botocore``] Update eks client to latest version", + "type": "api-change" + }, + { + "category": "``mediaconvert``", + "description": "[``botocore``] Update mediaconvert client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.230.json b/.changes/1.9.230.json new file mode 100644 index 0000000..01dce9f --- /dev/null +++ b/.changes/1.9.230.json @@ -0,0 +1,17 @@ +[ + { + "category": "``iam``", + "description": "[``botocore``] Update iam client to latest version", + "type": "api-change" + }, + { + "category": "``athena``", + "description": "[``botocore``] Update athena client to latest version", + "type": "api-change" + }, + { + "category": "``personalize``", + "description": "[``botocore``] Update personalize client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.231.json b/.changes/1.9.231.json new file mode 100644 index 0000000..c6b46e9 --- /dev/null +++ b/.changes/1.9.231.json @@ -0,0 +1,17 @@ +[ + { + "category": "``ram``", + "description": "[``botocore``] Update ram client to latest version", + "type": "api-change" + }, + { + "category": "``waf-regional``", + "description": "[``botocore``] Update waf-regional client to latest version", + "type": "api-change" + }, + { + "category": "``apigateway``", + "description": "[``botocore``] Update apigateway client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.232.json b/.changes/1.9.232.json new file mode 100644 index 0000000..7e70f1c --- /dev/null +++ b/.changes/1.9.232.json @@ -0,0 +1,17 @@ +[ + { + "category": "``mediaconnect``", + "description": "[``botocore``] Update mediaconnect client to latest version", + "type": "api-change" + }, + { + "category": "``glue``", + "description": "[``botocore``] Update glue client to latest version", + "type": "api-change" + }, + { + "category": "``ecs``", + "description": "[``botocore``] Update ecs client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.233.json b/.changes/1.9.233.json new file mode 100644 index 0000000..06edbb0 --- /dev/null +++ b/.changes/1.9.233.json @@ -0,0 +1,22 @@ +[ + { + "category": "``workspaces``", + "description": "[``botocore``] Update workspaces client to latest version", + "type": "api-change" + }, + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + }, + { + "category": "``greengrass``", + "description": "[``botocore``] Update greengrass client to latest version", + "type": "api-change" + }, + { + "category": "``rds``", + "description": "[``botocore``] Update rds client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.234.json b/.changes/1.9.234.json new file mode 100644 index 0000000..7bca6aa --- /dev/null +++ b/.changes/1.9.234.json @@ -0,0 +1,12 @@ +[ + { + "category": "``rds-data``", + "description": "[``botocore``] Update rds-data client to latest version", + "type": "api-change" + }, + { + "category": "``redshift``", + "description": "[``botocore``] Update redshift client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.235.json b/.changes/1.9.235.json new file mode 100644 index 0000000..d3c2422 --- /dev/null +++ b/.changes/1.9.235.json @@ -0,0 +1,17 @@ +[ + { + "category": "``transcribe``", + "description": "[``botocore``] Update transcribe client to latest version", + "type": "api-change" + }, + { + "category": "``comprehendmedical``", + "description": "[``botocore``] Update comprehendmedical client to latest version", + "type": "api-change" + }, + { + "category": "``datasync``", + "description": "[``botocore``] Update datasync client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.236.json b/.changes/1.9.236.json new file mode 100644 index 0000000..d5219b1 --- /dev/null +++ b/.changes/1.9.236.json @@ -0,0 +1,17 @@ +[ + { + "category": "``globalaccelerator``", + "description": "[``botocore``] Update globalaccelerator client to latest version", + "type": "api-change" + }, + { + "category": "``dms``", + "description": "[``botocore``] Update dms client to latest version", + "type": "api-change" + }, + { + "category": "``sagemaker``", + "description": "[``botocore``] Update sagemaker client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.237.json b/.changes/1.9.237.json new file mode 100644 index 0000000..3642aba --- /dev/null +++ b/.changes/1.9.237.json @@ -0,0 +1,12 @@ +[ + { + "category": "``ssm``", + "description": "[``botocore``] Update ssm client to latest version", + "type": "api-change" + }, + { + "category": "``codepipeline``", + "description": "[``botocore``] Update codepipeline client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.238.json b/.changes/1.9.238.json new file mode 100644 index 0000000..6d9f5bf --- /dev/null +++ b/.changes/1.9.238.json @@ -0,0 +1,12 @@ +[ + { + "category": "``amplify``", + "description": "[``botocore``] Update amplify client to latest version", + "type": "api-change" + }, + { + "category": "``ecs``", + "description": "[``botocore``] Update ecs client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.239.json b/.changes/1.9.239.json new file mode 100644 index 0000000..32d8b93 --- /dev/null +++ b/.changes/1.9.239.json @@ -0,0 +1,17 @@ +[ + { + "category": "``waf``", + "description": "[``botocore``] Update waf client to latest version", + "type": "api-change" + }, + { + "category": "``rds``", + "description": "[``botocore``] Update rds client to latest version", + "type": "api-change" + }, + { + "category": "``mq``", + "description": "[``botocore``] Update mq client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.240.json b/.changes/1.9.240.json new file mode 100644 index 0000000..55d9d74 --- /dev/null +++ b/.changes/1.9.240.json @@ -0,0 +1,7 @@ +[ + { + "category": "``docdb``", + "description": "[``botocore``] Update docdb client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.241.json b/.changes/1.9.241.json new file mode 100644 index 0000000..bb02ebe --- /dev/null +++ b/.changes/1.9.241.json @@ -0,0 +1,7 @@ +[ + { + "category": "``lightsail``", + "description": "[``botocore``] Update lightsail client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.242.json b/.changes/1.9.242.json new file mode 100644 index 0000000..9f79482 --- /dev/null +++ b/.changes/1.9.242.json @@ -0,0 +1,22 @@ +[ + { + "category": "``es``", + "description": "[``botocore``] Update es client to latest version", + "type": "api-change" + }, + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + }, + { + "category": "``application-autoscaling``", + "description": "[``botocore``] Update application-autoscaling client to latest version", + "type": "api-change" + }, + { + "category": "``devicefarm``", + "description": "[``botocore``] Update devicefarm client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.243.json b/.changes/1.9.243.json new file mode 100644 index 0000000..0700a44 --- /dev/null +++ b/.changes/1.9.243.json @@ -0,0 +1,17 @@ +[ + { + "category": "``cognito-idp``", + "description": "[``botocore``] Update cognito-idp client to latest version", + "type": "api-change" + }, + { + "category": "``mediapackage``", + "description": "[``botocore``] Update mediapackage client to latest version", + "type": "api-change" + }, + { + "category": "``ssm``", + "description": "[``botocore``] Update ssm client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.244.json b/.changes/1.9.244.json new file mode 100644 index 0000000..724f8cf --- /dev/null +++ b/.changes/1.9.244.json @@ -0,0 +1,32 @@ +[ + { + "category": "``snowball``", + "description": "[``botocore``] Update snowball client to latest version", + "type": "api-change" + }, + { + "category": "``directconnect``", + "description": "[``botocore``] Update directconnect client to latest version", + "type": "api-change" + }, + { + "category": "``firehose``", + "description": "[``botocore``] Update firehose client to latest version", + "type": "api-change" + }, + { + "category": "``pinpoint``", + "description": "[``botocore``] Update pinpoint client to latest version", + "type": "api-change" + }, + { + "category": "``glue``", + "description": "[``botocore``] Update glue client to latest version", + "type": "api-change" + }, + { + "category": "``pinpoint-email``", + "description": "[``botocore``] Update pinpoint-email client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.245.json b/.changes/1.9.245.json new file mode 100644 index 0000000..bc7a333 --- /dev/null +++ b/.changes/1.9.245.json @@ -0,0 +1,22 @@ +[ + { + "category": "``organizations``", + "description": "[``botocore``] Update organizations client to latest version", + "type": "api-change" + }, + { + "category": "``events``", + "description": "[``botocore``] Update events client to latest version", + "type": "api-change" + }, + { + "category": "``firehose``", + "description": "[``botocore``] Update firehose client to latest version", + "type": "api-change" + }, + { + "category": "``datasync``", + "description": "[``botocore``] Update datasync client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.246.json b/.changes/1.9.246.json new file mode 100644 index 0000000..3319502 --- /dev/null +++ b/.changes/1.9.246.json @@ -0,0 +1,17 @@ +[ + { + "category": "``kafka``", + "description": "[``botocore``] Update kafka client to latest version", + "type": "api-change" + }, + { + "category": "``elasticache``", + "description": "[``botocore``] Update elasticache client to latest version", + "type": "api-change" + }, + { + "category": "``mediaconvert``", + "description": "[``botocore``] Update mediaconvert client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.247.json b/.changes/1.9.247.json new file mode 100644 index 0000000..7636638 --- /dev/null +++ b/.changes/1.9.247.json @@ -0,0 +1,22 @@ +[ + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + }, + { + "category": "``lex-runtime``", + "description": "[``botocore``] Update lex-runtime client to latest version", + "type": "api-change" + }, + { + "category": "``fms``", + "description": "[``botocore``] Update fms client to latest version", + "type": "api-change" + }, + { + "category": "``iotanalytics``", + "description": "[``botocore``] Update iotanalytics client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.248.json b/.changes/1.9.248.json new file mode 100644 index 0000000..8b0195d --- /dev/null +++ b/.changes/1.9.248.json @@ -0,0 +1,7 @@ +[ + { + "category": "``greengrass``", + "description": "[``botocore``] Update greengrass client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.249.json b/.changes/1.9.249.json new file mode 100644 index 0000000..449ccb7 --- /dev/null +++ b/.changes/1.9.249.json @@ -0,0 +1,12 @@ +[ + { + "category": "``personalize``", + "description": "[``botocore``] Update personalize client to latest version", + "type": "api-change" + }, + { + "category": "``workspaces``", + "description": "[``botocore``] Update workspaces client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.250.json b/.changes/1.9.250.json new file mode 100644 index 0000000..a410449 --- /dev/null +++ b/.changes/1.9.250.json @@ -0,0 +1,7 @@ +[ + { + "category": "``kinesis-video-archived-media``", + "description": "[``botocore``] Update kinesis-video-archived-media client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.251.json b/.changes/1.9.251.json new file mode 100644 index 0000000..02bd53d --- /dev/null +++ b/.changes/1.9.251.json @@ -0,0 +1,17 @@ +[ + { + "category": "``kafka``", + "description": "[``botocore``] Update kafka client to latest version", + "type": "api-change" + }, + { + "category": "``marketplacecommerceanalytics``", + "description": "[``botocore``] Update marketplacecommerceanalytics client to latest version", + "type": "api-change" + }, + { + "category": "``robomaker``", + "description": "[``botocore``] Update robomaker client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.252.json b/.changes/1.9.252.json new file mode 100644 index 0000000..32fb693 --- /dev/null +++ b/.changes/1.9.252.json @@ -0,0 +1,12 @@ +[ + { + "category": "``batch``", + "description": "[``botocore``] Update batch client to latest version", + "type": "api-change" + }, + { + "category": "``rds``", + "description": "[``botocore``] Update rds client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.253.json b/.changes/1.9.253.json new file mode 100644 index 0000000..39c695f --- /dev/null +++ b/.changes/1.9.253.json @@ -0,0 +1,7 @@ +[ + { + "category": "``cloudwatch``", + "description": "[``botocore``] Update cloudwatch client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.87.json b/.changes/1.9.87.json new file mode 100644 index 0000000..6a8aaf7 --- /dev/null +++ b/.changes/1.9.87.json @@ -0,0 +1,22 @@ +[ + { + "category": "``ecs``", + "description": "[``botocore``] Update ecs client to latest version", + "type": "api-change" + }, + { + "category": "``application-autoscaling``", + "description": "[``botocore``] Update application-autoscaling client to latest version", + "type": "api-change" + }, + { + "category": "``workspaces``", + "description": "[``botocore``] Update workspaces client to latest version", + "type": "api-change" + }, + { + "category": "``codecommit``", + "description": "[``botocore``] Update codecommit client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.88.json b/.changes/1.9.88.json new file mode 100644 index 0000000..114599e --- /dev/null +++ b/.changes/1.9.88.json @@ -0,0 +1,17 @@ +[ + { + "category": "``shield``", + "description": "[``botocore``] Update shield client to latest version", + "type": "api-change" + }, + { + "category": "``servicecatalog``", + "description": "[``botocore``] Update servicecatalog client to latest version", + "type": "api-change" + }, + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.89.json b/.changes/1.9.89.json new file mode 100644 index 0000000..5f7776a --- /dev/null +++ b/.changes/1.9.89.json @@ -0,0 +1,12 @@ +[ + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + }, + { + "category": "``fsx``", + "description": "[``botocore``] Update fsx client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.90.json b/.changes/1.9.90.json new file mode 100644 index 0000000..6182719 --- /dev/null +++ b/.changes/1.9.90.json @@ -0,0 +1,22 @@ +[ + { + "category": "``es``", + "description": "[``botocore``] Update es client to latest version", + "type": "api-change" + }, + { + "category": "``medialive``", + "description": "[``botocore``] Update medialive client to latest version", + "type": "api-change" + }, + { + "category": "``gamelift``", + "description": "[``botocore``] Update gamelift client to latest version", + "type": "api-change" + }, + { + "category": "``robomaker``", + "description": "[``botocore``] Update robomaker client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.91.json b/.changes/1.9.91.json new file mode 100644 index 0000000..9cd0d1d --- /dev/null +++ b/.changes/1.9.91.json @@ -0,0 +1,17 @@ +[ + { + "category": "``discovery``", + "description": "[``botocore``] Update discovery client to latest version", + "type": "api-change" + }, + { + "category": "``ecs``", + "description": "[``botocore``] Update ecs client to latest version", + "type": "api-change" + }, + { + "category": "``dlm``", + "description": "[``botocore``] Update dlm client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.92.json b/.changes/1.9.92.json new file mode 100644 index 0000000..08c7d60 --- /dev/null +++ b/.changes/1.9.92.json @@ -0,0 +1,17 @@ +[ + { + "category": "``appstream``", + "description": "[``botocore``] Update appstream client to latest version", + "type": "api-change" + }, + { + "category": "``codebuild``", + "description": "[``botocore``] Update codebuild client to latest version", + "type": "api-change" + }, + { + "category": "``mediapackage``", + "description": "[``botocore``] Update mediapackage client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.93.json b/.changes/1.9.93.json new file mode 100644 index 0000000..1c71829 --- /dev/null +++ b/.changes/1.9.93.json @@ -0,0 +1,7 @@ +[ + { + "category": "``lambda``", + "description": "[``botocore``] Update lambda client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.94.json b/.changes/1.9.94.json new file mode 100644 index 0000000..e140968 --- /dev/null +++ b/.changes/1.9.94.json @@ -0,0 +1,17 @@ +[ + { + "category": "``rekognition``", + "description": "[``botocore``] Update rekognition client to latest version", + "type": "api-change" + }, + { + "category": "``mediatailor``", + "description": "[``botocore``] Update mediatailor client to latest version", + "type": "api-change" + }, + { + "category": "``efs``", + "description": "[``botocore``] Update efs client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.95.json b/.changes/1.9.95.json new file mode 100644 index 0000000..5f91d40 --- /dev/null +++ b/.changes/1.9.95.json @@ -0,0 +1,12 @@ +[ + { + "category": "``kinesisvideo``", + "description": "[``botocore``] Update kinesisvideo client to latest version", + "type": "api-change" + }, + { + "category": "``ec2``", + "description": "[``botocore``] Update ec2 client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.96.json b/.changes/1.9.96.json new file mode 100644 index 0000000..22a620b --- /dev/null +++ b/.changes/1.9.96.json @@ -0,0 +1,17 @@ +[ + { + "category": "``chime``", + "description": "[``botocore``] Update chime client to latest version", + "type": "api-change" + }, + { + "category": "``application-autoscaling``", + "description": "[``botocore``] Update application-autoscaling client to latest version", + "type": "api-change" + }, + { + "category": "``iot``", + "description": "[``botocore``] Update iot client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.97.json b/.changes/1.9.97.json new file mode 100644 index 0000000..67a4c81 --- /dev/null +++ b/.changes/1.9.97.json @@ -0,0 +1,12 @@ +[ + { + "category": "``athena``", + "description": "[``botocore``] Update athena client to latest version", + "type": "api-change" + }, + { + "category": "``secretsmanager``", + "description": "[``botocore``] Update secretsmanager client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.98.json b/.changes/1.9.98.json new file mode 100644 index 0000000..d8275bd --- /dev/null +++ b/.changes/1.9.98.json @@ -0,0 +1,27 @@ +[ + { + "category": "``iot``", + "description": "[``botocore``] Update iot client to latest version", + "type": "api-change" + }, + { + "category": "``ssm``", + "description": "[``botocore``] Update ssm client to latest version", + "type": "api-change" + }, + { + "category": "``ds``", + "description": "[``botocore``] Update ds client to latest version", + "type": "api-change" + }, + { + "category": "Paginator", + "description": "[``botocore``] Add additional paginators for CloudFormation", + "type": "enhancement" + }, + { + "category": "``efs``", + "description": "[``botocore``] Update efs client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.changes/1.9.99.json b/.changes/1.9.99.json new file mode 100644 index 0000000..a615b80 --- /dev/null +++ b/.changes/1.9.99.json @@ -0,0 +1,17 @@ +[ + { + "category": "``codecommit``", + "description": "[``botocore``] Update codecommit client to latest version", + "type": "api-change" + }, + { + "category": "``directconnect``", + "description": "[``botocore``] Update directconnect client to latest version", + "type": "api-change" + }, + { + "category": "``medialive``", + "description": "[``botocore``] Update medialive client to latest version", + "type": "api-change" + } +] \ No newline at end of file diff --git a/.gitignore b/.gitignore index bee41a4..9c4c771 100644 --- a/.gitignore +++ b/.gitignore @@ -21,4 +21,7 @@ env2 env3 # IntelliJ / PyCharm IDE -.idea/ \ No newline at end of file +.idea/ + +# Visual Studio used to edit docs +docs/source/.vs diff --git a/CHANGELOG.rst b/CHANGELOG.rst index ea76df8..a6344f1 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -2,6 +2,1410 @@ CHANGELOG ========= +1.9.253 +======= + +* api-change:``cloudwatch``: [``botocore``] Update cloudwatch client to latest version + + +1.9.252 +======= + +* api-change:``batch``: [``botocore``] Update batch client to latest version +* api-change:``rds``: [``botocore``] Update rds client to latest version + + +1.9.251 +======= + +* api-change:``kafka``: [``botocore``] Update kafka client to latest version +* api-change:``marketplacecommerceanalytics``: [``botocore``] Update marketplacecommerceanalytics client to latest version +* api-change:``robomaker``: [``botocore``] Update robomaker client to latest version + + +1.9.250 +======= + +* api-change:``kinesis-video-archived-media``: [``botocore``] Update kinesis-video-archived-media client to latest version + + +1.9.249 +======= + +* api-change:``personalize``: [``botocore``] Update personalize client to latest version +* api-change:``workspaces``: [``botocore``] Update workspaces client to latest version + + +1.9.248 +======= + +* api-change:``greengrass``: [``botocore``] Update greengrass client to latest version + + +1.9.247 +======= + +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version +* api-change:``lex-runtime``: [``botocore``] Update lex-runtime client to latest version +* api-change:``fms``: [``botocore``] Update fms client to latest version +* api-change:``iotanalytics``: [``botocore``] Update iotanalytics client to latest version + + +1.9.246 +======= + +* api-change:``kafka``: [``botocore``] Update kafka client to latest version +* api-change:``elasticache``: [``botocore``] Update elasticache client to latest version +* api-change:``mediaconvert``: [``botocore``] Update mediaconvert client to latest version + + +1.9.245 +======= + +* api-change:``organizations``: [``botocore``] Update organizations client to latest version +* api-change:``events``: [``botocore``] Update events client to latest version +* api-change:``firehose``: [``botocore``] Update firehose client to latest version +* api-change:``datasync``: [``botocore``] Update datasync client to latest version + + +1.9.244 +======= + +* api-change:``snowball``: [``botocore``] Update snowball client to latest version +* api-change:``directconnect``: [``botocore``] Update directconnect client to latest version +* api-change:``firehose``: [``botocore``] Update firehose client to latest version +* api-change:``pinpoint``: [``botocore``] Update pinpoint client to latest version +* api-change:``glue``: [``botocore``] Update glue client to latest version +* api-change:``pinpoint-email``: [``botocore``] Update pinpoint-email client to latest version + + +1.9.243 +======= + +* api-change:``cognito-idp``: [``botocore``] Update cognito-idp client to latest version +* api-change:``mediapackage``: [``botocore``] Update mediapackage client to latest version +* api-change:``ssm``: [``botocore``] Update ssm client to latest version + + +1.9.242 +======= + +* api-change:``es``: [``botocore``] Update es client to latest version +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version +* api-change:``application-autoscaling``: [``botocore``] Update application-autoscaling client to latest version +* api-change:``devicefarm``: [``botocore``] Update devicefarm client to latest version + + +1.9.241 +======= + +* api-change:``lightsail``: [``botocore``] Update lightsail client to latest version + + +1.9.240 +======= + +* api-change:``docdb``: [``botocore``] Update docdb client to latest version + + +1.9.239 +======= + +* api-change:``waf``: [``botocore``] Update waf client to latest version +* api-change:``rds``: [``botocore``] Update rds client to latest version +* api-change:``mq``: [``botocore``] Update mq client to latest version + + +1.9.238 +======= + +* api-change:``amplify``: [``botocore``] Update amplify client to latest version +* api-change:``ecs``: [``botocore``] Update ecs client to latest version + + +1.9.237 +======= + +* api-change:``ssm``: [``botocore``] Update ssm client to latest version +* api-change:``codepipeline``: [``botocore``] Update codepipeline client to latest version + + +1.9.236 +======= + +* api-change:``globalaccelerator``: [``botocore``] Update globalaccelerator client to latest version +* api-change:``dms``: [``botocore``] Update dms client to latest version +* api-change:``sagemaker``: [``botocore``] Update sagemaker client to latest version + + +1.9.235 +======= + +* api-change:``transcribe``: [``botocore``] Update transcribe client to latest version +* api-change:``comprehendmedical``: [``botocore``] Update comprehendmedical client to latest version +* api-change:``datasync``: [``botocore``] Update datasync client to latest version + + +1.9.234 +======= + +* api-change:``rds-data``: [``botocore``] Update rds-data client to latest version +* api-change:``redshift``: [``botocore``] Update redshift client to latest version + + +1.9.233 +======= + +* api-change:``workspaces``: [``botocore``] Update workspaces client to latest version +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version +* api-change:``greengrass``: [``botocore``] Update greengrass client to latest version +* api-change:``rds``: [``botocore``] Update rds client to latest version + + +1.9.232 +======= + +* api-change:``mediaconnect``: [``botocore``] Update mediaconnect client to latest version +* api-change:``glue``: [``botocore``] Update glue client to latest version +* api-change:``ecs``: [``botocore``] Update ecs client to latest version + + +1.9.231 +======= + +* api-change:``ram``: [``botocore``] Update ram client to latest version +* api-change:``waf-regional``: [``botocore``] Update waf-regional client to latest version +* api-change:``apigateway``: [``botocore``] Update apigateway client to latest version + + +1.9.230 +======= + +* api-change:``iam``: [``botocore``] Update iam client to latest version +* api-change:``athena``: [``botocore``] Update athena client to latest version +* api-change:``personalize``: [``botocore``] Update personalize client to latest version + + +1.9.229 +======= + +* api-change:``eks``: [``botocore``] Update eks client to latest version +* api-change:``mediaconvert``: [``botocore``] Update mediaconvert client to latest version + + +1.9.228 +======= + +* api-change:``elbv2``: [``botocore``] Update elbv2 client to latest version +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version +* api-change:``workmailmessageflow``: [``botocore``] Update workmailmessageflow client to latest version +* api-change:``medialive``: [``botocore``] Update medialive client to latest version + + +1.9.227 +======= + +* api-change:``stepfunctions``: [``botocore``] Update stepfunctions client to latest version +* api-change:``rds``: [``botocore``] Update rds client to latest version +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version +* api-change:``mediaconnect``: [``botocore``] Update mediaconnect client to latest version +* api-change:``ses``: [``botocore``] Update ses client to latest version +* api-change:``config``: [``botocore``] Update config client to latest version + + +1.9.226 +======= + +* api-change:``storagegateway``: [``botocore``] Update storagegateway client to latest version + + +1.9.225 +======= + +* api-change:``qldb``: [``botocore``] Update qldb client to latest version +* api-change:``marketplacecommerceanalytics``: [``botocore``] Update marketplacecommerceanalytics client to latest version +* api-change:``appstream``: [``botocore``] Update appstream client to latest version +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version +* api-change:``robomaker``: [``botocore``] Update robomaker client to latest version +* api-change:``appmesh``: [``botocore``] Update appmesh client to latest version +* api-change:``qldb-session``: [``botocore``] Update qldb-session client to latest version + + +1.9.224 +======= + +* api-change:``kinesisanalytics``: [``botocore``] Update kinesisanalytics client to latest version + + +1.9.223 +======= + +* api-change:``config``: [``botocore``] Update config client to latest version + + +1.9.222 +======= + +* api-change:``stepfunctions``: [``botocore``] Update stepfunctions client to latest version +* api-change:``transcribe``: [``botocore``] Update transcribe client to latest version +* api-change:``eks``: [``botocore``] Update eks client to latest version + + +1.9.221 +======= + +* api-change:``ecs``: [``botocore``] Update ecs client to latest version +* api-change:``resourcegroupstaggingapi``: [``botocore``] Update resourcegroupstaggingapi client to latest version +* api-change:``gamelift``: [``botocore``] Update gamelift client to latest version + + +1.9.220 +======= + +* api-change:``mq``: [``botocore``] Update mq client to latest version +* api-change:``apigatewaymanagementapi``: [``botocore``] Update apigatewaymanagementapi client to latest version +* api-change:``ecs``: [``botocore``] Update ecs client to latest version + + +1.9.219 +======= + +* api-change:``codepipeline``: [``botocore``] Update codepipeline client to latest version +* api-change:``application-autoscaling``: [``botocore``] Update application-autoscaling client to latest version +* api-change:``elasticache``: [``botocore``] Update elasticache client to latest version +* api-change:``lambda``: [``botocore``] Update lambda client to latest version +* api-change:``ecs``: [``botocore``] Update ecs client to latest version + + +1.9.218 +======= + +* api-change:``sqs``: [``botocore``] Update sqs client to latest version +* api-change:``globalaccelerator``: [``botocore``] Update globalaccelerator client to latest version +* api-change:``mediaconvert``: [``botocore``] Update mediaconvert client to latest version + + +1.9.217 +======= + +* api-change:``organizations``: [``botocore``] Update organizations client to latest version + + +1.9.216 +======= + +* api-change:``ssm``: [``botocore``] Update ssm client to latest version +* api-change:``securityhub``: [``botocore``] Update securityhub client to latest version + + +1.9.215 +======= + +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version +* api-change:``mediapackage-vod``: [``botocore``] Update mediapackage-vod client to latest version +* api-change:``transcribe``: [``botocore``] Update transcribe client to latest version + + +1.9.214 +======= + +* api-change:``datasync``: [``botocore``] Update datasync client to latest version +* api-change:``rds``: [``botocore``] Update rds client to latest version + + +1.9.213 +======= + +* api-change:``forecast``: [``botocore``] Update forecast client to latest version +* api-change:``forecastquery``: [``botocore``] Update forecastquery client to latest version +* api-change:``personalize-runtime``: [``botocore``] Update personalize-runtime client to latest version +* api-change:``elasticache``: [``botocore``] Update elasticache client to latest version +* api-change:``rekognition``: [``botocore``] Update rekognition client to latest version +* api-change:``sagemaker``: [``botocore``] Update sagemaker client to latest version +* api-change:``sqs``: [``botocore``] Update sqs client to latest version + + +1.9.212 +======= + +* api-change:``sagemaker``: [``botocore``] Update sagemaker client to latest version +* api-change:``transfer``: [``botocore``] Update transfer client to latest version +* api-change:``appstream``: [``botocore``] Update appstream client to latest version +* api-change:``alexaforbusiness``: [``botocore``] Update alexaforbusiness client to latest version + + +1.9.211 +======= + +* api-change:``appmesh``: [``botocore``] Update appmesh client to latest version +* api-change:``cur``: [``botocore``] Update cur client to latest version + + +1.9.210 +======= + +* api-change:``robomaker``: [``botocore``] Update robomaker client to latest version +* api-change:``emr``: [``botocore``] Update emr client to latest version +* api-change:``ecs``: [``botocore``] Update ecs client to latest version + + +1.9.209 +======= + +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version +* api-change:``appmesh``: [``botocore``] Update appmesh client to latest version +* api-change:``athena``: [``botocore``] Update athena client to latest version +* api-change:``codecommit``: [``botocore``] Update codecommit client to latest version +* api-change:``glue``: [``botocore``] Update glue client to latest version +* api-change:``storagegateway``: [``botocore``] Update storagegateway client to latest version + + +1.9.208 +======= + +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version + + +1.9.207 +======= + +* api-change:``appsync``: [``botocore``] Update appsync client to latest version + + +1.9.206 +======= + +* api-change:``autoscaling``: [``botocore``] Update autoscaling client to latest version +* api-change:``cloudwatch``: [``botocore``] Update cloudwatch client to latest version +* api-change:``application-autoscaling``: [``botocore``] Update application-autoscaling client to latest version +* api-change:``rekognition``: [``botocore``] Update rekognition client to latest version + + +1.9.205 +======= + +* api-change:``guardduty``: [``botocore``] Update guardduty client to latest version +* api-change:``lex-runtime``: [``botocore``] Update lex-runtime client to latest version +* api-change:``redshift``: [``botocore``] Update redshift client to latest version +* api-change:``iot``: [``botocore``] Update iot client to latest version +* api-change:``mediaconvert``: [``botocore``] Update mediaconvert client to latest version + + +1.9.204 +======= + +* api-change:``lakeformation``: [``botocore``] Update lakeformation client to latest version +* api-change:``opsworkscm``: [``botocore``] Update opsworkscm client to latest version +* api-change:``glue``: [``botocore``] Update glue client to latest version +* api-change:``codebuild``: [``botocore``] Update codebuild client to latest version + + +1.9.203 +======= + +* api-change:``application-insights``: [``botocore``] Update application-insights client to latest version + + +1.9.202 +======= + +* api-change:``batch``: [``botocore``] Update batch client to latest version + + +1.9.201 +======= + +* api-change:``datasync``: [``botocore``] Update datasync client to latest version +* api-change:``iot``: [``botocore``] Update iot client to latest version +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version + + +1.9.200 +======= + +* api-change:``sts``: [``botocore``] Update sts client to latest version +* enhancement:Credentials: [``botocore``] Add support for a credential provider that handles resolving credentials via STS AssumeRoleWithWebIdentity + + +1.9.199 +======= + +* api-change:``polly``: [``botocore``] Update polly client to latest version +* api-change:``mediaconvert``: [``botocore``] Update mediaconvert client to latest version +* api-change:``route53``: [``botocore``] Update route53 client to latest version + + +1.9.198 +======= + +* bugfix:S3: [``botocore``] Fix an issue that would cause S3 list_object_versions to sometimes fail parsing responses with certain key values. +* api-change:``codecommit``: [``botocore``] Update codecommit client to latest version + + +1.9.197 +======= + +* api-change:``ce``: [``botocore``] Update ce client to latest version +* api-change:``greengrass``: [``botocore``] Update greengrass client to latest version +* api-change:``glue``: [``botocore``] Update glue client to latest version +* api-change:``logs``: [``botocore``] Update logs client to latest version +* api-change:``mediaconnect``: [``botocore``] Update mediaconnect client to latest version +* api-change:``batch``: [``botocore``] Update batch client to latest version +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version + + +1.9.196 +======= + +* api-change:``medialive``: [``botocore``] Update medialive client to latest version +* api-change:``ecr``: [``botocore``] Update ecr client to latest version +* api-change:``mediaconvert``: [``botocore``] Update mediaconvert client to latest version + + +1.9.195 +======= + +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version +* api-change:``sts``: [``botocore``] Update sts client to latest version +* api-change:``pinpoint``: [``botocore``] Update pinpoint client to latest version +* api-change:``glue``: [``botocore``] Update glue client to latest version + + +1.9.194 +======= + +* api-change:``ssm``: [``botocore``] Update ssm client to latest version +* api-change:``secretsmanager``: [``botocore``] Update secretsmanager client to latest version + + +1.9.193 +======= + +* api-change:``mq``: [``botocore``] Update mq client to latest version +* api-change:``shield``: [``botocore``] Update shield client to latest version + + +1.9.192 +======= + +* bugfix:Dependency: [``botocore``] Fixed dependency issue with broken docutils aws/aws-cli`#4332 `__ + + +1.9.191 +======= + +* api-change:``sqs``: [``botocore``] Update sqs client to latest version +* api-change:``iotevents``: [``botocore``] Update iotevents client to latest version + + +1.9.190 +======= + +* api-change:``comprehend``: [``botocore``] Update comprehend client to latest version +* api-change:``codedeploy``: [``botocore``] Update codedeploy client to latest version +* api-change:``elasticache``: [``botocore``] Update elasticache client to latest version +* api-change:``ecs``: [``botocore``] Update ecs client to latest version + + +1.9.189 +======= + +* api-change:``config``: [``botocore``] Update config client to latest version +* api-change:``dms``: [``botocore``] Update dms client to latest version +* api-change:``autoscaling``: [``botocore``] Update autoscaling client to latest version + + +1.9.188 +======= + +* api-change:``iam``: [``botocore``] Update iam client to latest version +* api-change:``apigatewayv2``: [``botocore``] Update apigatewayv2 client to latest version +* api-change:``robomaker``: [``botocore``] Update robomaker client to latest version +* api-change:``es``: [``botocore``] Update es client to latest version + + +1.9.187 +======= + +* api-change:``events``: [``botocore``] Update events client to latest version + + +1.9.186 +======= + +* api-change:``quicksight``: [``botocore``] Update quicksight client to latest version +* api-change:``glacier``: [``botocore``] Update glacier client to latest version +* api-change:``servicecatalog``: [``botocore``] Update servicecatalog client to latest version + + +1.9.185 +======= + +* api-change:``efs``: [``botocore``] Update efs client to latest version +* api-change:``cloudwatch``: [``botocore``] Update cloudwatch client to latest version +* api-change:``amplify``: [``botocore``] Update amplify client to latest version +* api-change:``kinesis-video-archived-media``: [``botocore``] Update kinesis-video-archived-media client to latest version +* api-change:``gamelift``: [``botocore``] Update gamelift client to latest version +* api-change:``kinesisvideo``: [``botocore``] Update kinesisvideo client to latest version +* api-change:``waf``: [``botocore``] Update waf client to latest version +* api-change:``config``: [``botocore``] Update config client to latest version +* api-change:``waf-regional``: [``botocore``] Update waf-regional client to latest version + + +1.9.184 +======= + +* api-change:``ce``: [``botocore``] Update ce client to latest version + + +1.9.183 +======= + +* api-change:``swf``: [``botocore``] Update swf client to latest version +* api-change:``rds``: [``botocore``] Update rds client to latest version +* api-change:``s3``: [``botocore``] Update s3 client to latest version +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version + + +1.9.182 +======= + +* enhancement:CSM: [``botocore``] Support configuration of the host used in client side metrics via AWS_CSM_HOST +* api-change:``appstream``: [``botocore``] Update appstream client to latest version +* api-change:``mediastore``: [``botocore``] Update mediastore client to latest version + + +1.9.181 +======= + +* api-change:``docdb``: [``botocore``] Update docdb client to latest version +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version +* api-change:``organizations``: [``botocore``] Update organizations client to latest version +* api-change:``rds``: [``botocore``] Update rds client to latest version + + +1.9.180 +======= + +* api-change:``alexaforbusiness``: [``botocore``] Update alexaforbusiness client to latest version +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version +* api-change:``redshift``: [``botocore``] Update redshift client to latest version +* api-change:``workspaces``: [``botocore``] Update workspaces client to latest version + + +1.9.179 +======= + +* api-change:``directconnect``: [``botocore``] Update directconnect client to latest version +* api-change:``pinpoint``: [``botocore``] Update pinpoint client to latest version +* api-change:``workspaces``: [``botocore``] Update workspaces client to latest version +* api-change:``ec2-instance-connect``: [``botocore``] Update ec2-instance-connect client to latest version + + +1.9.178 +======= + +* api-change:``dynamodb``: [``botocore``] Update dynamodb client to latest version + + +1.9.177 +======= + +* api-change:``codecommit``: [``botocore``] Update codecommit client to latest version +* api-change:``apigatewayv2``: [``botocore``] Update apigatewayv2 client to latest version + + +1.9.176 +======= + +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version +* api-change:``eks``: [``botocore``] Update eks client to latest version + + +1.9.175 +======= + +* api-change:``application-insights``: [``botocore``] Update application-insights client to latest version +* api-change:``securityhub``: [``botocore``] Update securityhub client to latest version +* api-change:``apigateway``: [``botocore``] Update apigateway client to latest version +* api-change:``elbv2``: [``botocore``] Update elbv2 client to latest version +* api-change:``fsx``: [``botocore``] Update fsx client to latest version +* api-change:``service-quotas``: [``botocore``] Update service-quotas client to latest version +* api-change:``resourcegroupstaggingapi``: [``botocore``] Update resourcegroupstaggingapi client to latest version +* api-change:``ssm``: [``botocore``] Update ssm client to latest version +* api-change:``apigatewayv2``: [``botocore``] Update apigatewayv2 client to latest version + + +1.9.174 +======= + +* api-change:``devicefarm``: [``botocore``] Update devicefarm client to latest version +* api-change:``iam``: [``botocore``] Update iam client to latest version +* api-change:``mediapackage``: [``botocore``] Update mediapackage client to latest version +* api-change:``kinesis-video-media``: [``botocore``] Update kinesis-video-media client to latest version + + +1.9.173 +======= + +* api-change:``health``: [``botocore``] Update health client to latest version +* api-change:``glue``: [``botocore``] Update glue client to latest version +* api-change:``iotevents-data``: [``botocore``] Update iotevents-data client to latest version +* api-change:``opsworks``: [``botocore``] Update opsworks client to latest version +* api-change:``rds``: [``botocore``] Update rds client to latest version +* api-change:``acm-pca``: [``botocore``] Update acm-pca client to latest version + + +1.9.172 +======= + +* api-change:``eks``: [``botocore``] Update eks client to latest version + + +1.9.171 +======= + +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version +* api-change:``resourcegroupstaggingapi``: [``botocore``] Update resourcegroupstaggingapi client to latest version + + +1.9.170 +======= + +* api-change:``neptune``: [``botocore``] Update neptune client to latest version +* api-change:``servicecatalog``: [``botocore``] Update servicecatalog client to latest version +* api-change:``robomaker``: [``botocore``] Update robomaker client to latest version +* bugfix:Paginator: [``botocore``] Fixes a bug where pagination tokens with three consecutive underscores would result in a parsing failure. Resolves boto/boto3`#1984 `__. + + +1.9.169 +======= + +* api-change:``cloudfront``: [``botocore``] Update cloudfront client to latest version +* api-change:``personalize``: [``botocore``] Update personalize client to latest version +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version +* api-change:``appstream``: [``botocore``] Update appstream client to latest version + + +1.9.168 +======= + +* api-change:``appmesh``: [``botocore``] Update appmesh client to latest version +* api-change:``elasticache``: [``botocore``] Update elasticache client to latest version +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version +* api-change:``guardduty``: [``botocore``] Update guardduty client to latest version + + +1.9.167 +======= + +* api-change:``servicecatalog``: [``botocore``] Update servicecatalog client to latest version + + +1.9.166 +======= + +* api-change:``sagemaker``: [``botocore``] Update sagemaker client to latest version + + +1.9.165 +======= + +* api-change:``codebuild``: [``botocore``] Update codebuild client to latest version +* api-change:``personalize-runtime``: [``botocore``] Update personalize-runtime client to latest version +* api-change:``codecommit``: [``botocore``] Update codecommit client to latest version +* api-change:``personalize-events``: [``botocore``] Update personalize-events client to latest version +* api-change:``personalize``: [``botocore``] Update personalize client to latest version + + +1.9.164 +======= + +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version + + +1.9.163 +======= + +* api-change:``ecs``: [``botocore``] Update ecs client to latest version +* api-change:``organizations``: [``botocore``] Update organizations client to latest version +* api-change:``logs``: [``botocore``] Update logs client to latest version +* api-change:``dynamodb``: [``botocore``] Update dynamodb client to latest version +* api-change:``guardduty``: [``botocore``] Update guardduty client to latest version +* api-change:``ssm``: [``botocore``] Update ssm client to latest version +* api-change:``ses``: [``botocore``] Update ses client to latest version +* api-change:``mediaconnect``: [``botocore``] Update mediaconnect client to latest version + + +1.9.162 +======= + +* api-change:``glue``: [``botocore``] Update glue client to latest version + + +1.9.161 +======= + +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version +* api-change:``storagegateway``: [``botocore``] Update storagegateway client to latest version +* api-change:``s3``: [``botocore``] Update s3 client to latest version +* api-change:``elasticache``: [``botocore``] Update elasticache client to latest version +* api-change:``iam``: [``botocore``] Update iam client to latest version + + +1.9.160 +======= + +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version +* api-change:``rds``: [``botocore``] Update rds client to latest version + + +1.9.159 +======= + +* api-change:``iotevents-data``: [``botocore``] Update iotevents-data client to latest version +* api-change:``iotevents``: [``botocore``] Update iotevents client to latest version +* api-change:``pinpoint-email``: [``botocore``] Update pinpoint-email client to latest version +* api-change:``iotanalytics``: [``botocore``] Update iotanalytics client to latest version +* api-change:``codecommit``: [``botocore``] Update codecommit client to latest version +* api-change:``rds-data``: [``botocore``] Update rds-data client to latest version +* api-change:``rds``: [``botocore``] Update rds client to latest version +* api-change:``servicecatalog``: [``botocore``] Update servicecatalog client to latest version +* api-change:``kafka``: [``botocore``] Update kafka client to latest version + + +1.9.158 +======= + +* api-change:``ssm``: [``botocore``] Update ssm client to latest version +* api-change:``securityhub``: [``botocore``] Update securityhub client to latest version +* api-change:``iotthingsgraph``: [``botocore``] Update iotthingsgraph client to latest version +* api-change:``dlm``: [``botocore``] Update dlm client to latest version +* api-change:``rds``: [``botocore``] Update rds client to latest version +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version + + +1.9.157 +======= + +* api-change:``groundstation``: [``botocore``] Update groundstation client to latest version +* api-change:``transcribe``: [``botocore``] Update transcribe client to latest version +* api-change:``chime``: [``botocore``] Update chime client to latest version +* api-change:``rds``: [``botocore``] Update rds client to latest version +* api-change:``waf``: [``botocore``] Update waf client to latest version +* api-change:``pinpoint-email``: [``botocore``] Update pinpoint-email client to latest version +* api-change:``robomaker``: [``botocore``] Update robomaker client to latest version +* api-change:``sts``: [``botocore``] Update sts client to latest version +* api-change:``storagegateway``: [``botocore``] Update storagegateway client to latest version + + +1.9.156 +======= + +* api-change:``mediastore-data``: [``botocore``] Update mediastore-data client to latest version +* api-change:``codedeploy``: [``botocore``] Update codedeploy client to latest version +* api-change:``opsworkscm``: [``botocore``] Update opsworkscm client to latest version + + +1.9.155 +======= + +* api-change:``waf-regional``: [``botocore``] Update waf-regional client to latest version +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version + + +1.9.154 +======= + +* api-change:``efs``: [``botocore``] Update efs client to latest version +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version +* api-change:``apigateway``: [``botocore``] Update apigateway client to latest version +* api-change:``worklink``: [``botocore``] Update worklink client to latest version +* api-change:``rds``: [``botocore``] Update rds client to latest version +* api-change:``servicecatalog``: [``botocore``] Update servicecatalog client to latest version +* api-change:``devicefarm``: [``botocore``] Update devicefarm client to latest version +* api-change:``budgets``: [``botocore``] Update budgets client to latest version + + +1.9.153 +======= + +* api-change:``datasync``: [``botocore``] Update datasync client to latest version +* api-change:``alexaforbusiness``: [``botocore``] Update alexaforbusiness client to latest version + + +1.9.152 +======= + +* api-change:``kafka``: [``botocore``] Update kafka client to latest version +* api-change:``meteringmarketplace``: [``botocore``] Update meteringmarketplace client to latest version +* api-change:``mediapackage-vod``: [``botocore``] Update mediapackage-vod client to latest version + + +1.9.151 +======= + +* api-change:``appstream``: [``botocore``] Update appstream client to latest version + + +1.9.150 +======= + +* api-change:``medialive``: [``botocore``] Update medialive client to latest version +* api-change:``s3``: [``botocore``] Update s3 client to latest version + + +1.9.149 +======= + +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version +* api-change:``transcribe``: [``botocore``] Update transcribe client to latest version +* api-change:``mediapackage``: [``botocore``] Update mediapackage client to latest version +* api-change:``codepipeline``: [``botocore``] Update codepipeline client to latest version +* enhancement:Environment Variables: [``botocore``] Ignore env var credentials is values are empty (`#1680 `__) +* api-change:``rds``: [``botocore``] Update rds client to latest version + + +1.9.148 +======= + +* api-change:``comprehend``: [``botocore``] Update comprehend client to latest version +* api-change:``chime``: [``botocore``] Update chime client to latest version +* api-change:``storagegateway``: [``botocore``] Update storagegateway client to latest version +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version + + +1.9.147 +======= + +* api-change:``datasync``: [``botocore``] Update datasync client to latest version +* api-change:``iotanalytics``: [``botocore``] Update iotanalytics client to latest version +* api-change:``lambda``: [``botocore``] Update lambda client to latest version + + +1.9.146 +======= + +* api-change:``glue``: [``botocore``] Update glue client to latest version +* api-change:``sts``: [``botocore``] Update sts client to latest version + + +1.9.145 +======= + +* api-change:``servicecatalog``: [``botocore``] Update servicecatalog client to latest version +* api-change:``eks``: [``botocore``] Update eks client to latest version +* api-change:``sagemaker``: [``botocore``] Update sagemaker client to latest version +* api-change:``kinesisanalytics``: [``botocore``] Update kinesisanalytics client to latest version +* api-change:``kinesisanalyticsv2``: [``botocore``] Update kinesisanalyticsv2 client to latest version + + +1.9.144 +======= + +* api-change:``appsync``: [``botocore``] Update appsync client to latest version +* api-change:``storagegateway``: [``botocore``] Update storagegateway client to latest version +* api-change:``ssm``: [``botocore``] Update ssm client to latest version +* api-change:``alexaforbusiness``: [``botocore``] Update alexaforbusiness client to latest version + + +1.9.143 +======= + +* api-change:``config``: [``botocore``] Update config client to latest version +* api-change:``iam``: [``botocore``] Update iam client to latest version +* api-change:``sts``: [``botocore``] Update sts client to latest version +* api-change:``codepipeline``: [``botocore``] Update codepipeline client to latest version + + +1.9.142 +======= + +* api-change:``workmail``: [``botocore``] Update workmail client to latest version +* api-change:``medialive``: [``botocore``] Update medialive client to latest version +* api-change:``cognito-idp``: [``botocore``] Update cognito-idp client to latest version +* api-change:``mediaconvert``: [``botocore``] Update mediaconvert client to latest version + + +1.9.141 +======= + +* api-change:``alexaforbusiness``: [``botocore``] Update alexaforbusiness client to latest version +* api-change:``kms``: [``botocore``] Update kms client to latest version + + +1.9.140 +======= + +* api-change:``ecs``: [``botocore``] Update ecs client to latest version +* api-change:``xray``: [``botocore``] Update xray client to latest version +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version + + +1.9.139 +======= + +* api-change:``neptune``: [``botocore``] Update neptune client to latest version +* api-change:``servicecatalog``: [``botocore``] Update servicecatalog client to latest version +* api-change:``managedblockchain``: [``botocore``] Update managedblockchain client to latest version +* api-change:``s3control``: [``botocore``] Update s3control client to latest version +* api-change:``directconnect``: [``botocore``] Update directconnect client to latest version +* api-change:``codepipeline``: [``botocore``] Update codepipeline client to latest version + + +1.9.138 +======= + +* api-change:``transfer``: [``botocore``] Update transfer client to latest version +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version + + +1.9.137 +======= + +* api-change:``iam``: [``botocore``] Update iam client to latest version +* api-change:``sns``: [``botocore``] Update sns client to latest version + + +1.9.136 +======= + +* api-change:``gamelift``: [``botocore``] Update gamelift client to latest version +* api-change:``workspaces``: [``botocore``] Update workspaces client to latest version +* api-change:``dynamodb``: [``botocore``] Update dynamodb client to latest version +* api-change:``inspector``: [``botocore``] Update inspector client to latest version +* api-change:``lambda``: [``botocore``] Update lambda client to latest version +* api-change:``batch``: [``botocore``] Update batch client to latest version + + +1.9.135 +======= + +* api-change:``mediatailor``: [``botocore``] Update mediatailor client to latest version +* api-change:``rds``: [``botocore``] Update rds client to latest version +* api-change:``cloudformation``: [``botocore``] Update cloudformation client to latest version +* api-change:``ssm``: [``botocore``] Update ssm client to latest version +* api-change:``storagegateway``: [``botocore``] Update storagegateway client to latest version +* api-change:``route53``: [``botocore``] Update route53 client to latest version +* api-change:``alexaforbusiness``: [``botocore``] Update alexaforbusiness client to latest version +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version +* api-change:``mediaconnect``: [``botocore``] Update mediaconnect client to latest version +* api-change:``textract``: [``botocore``] Update textract client to latest version + + +1.9.134 +======= + +* api-change:``resource-groups``: [``botocore``] Update resource-groups client to latest version +* api-change:``transcribe``: [``botocore``] Update transcribe client to latest version +* api-change:``workspaces``: [``botocore``] Update workspaces client to latest version + + +1.9.133 +======= + +* api-change:``kafka``: [``botocore``] Update kafka client to latest version +* api-change:``cognito-idp``: [``botocore``] Update cognito-idp client to latest version +* api-change:``rds``: [``botocore``] Update rds client to latest version +* api-change:``worklink``: [``botocore``] Update worklink client to latest version +* api-change:``workspaces``: [``botocore``] Update workspaces client to latest version +* api-change:``discovery``: [``botocore``] Update discovery client to latest version +* api-change:``organizations``: [``botocore``] Update organizations client to latest version + + +1.9.132 +======= + +* api-change:``polly``: [``botocore``] Update polly client to latest version +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version + + +1.9.131 +======= + +* api-change:``organizations``: [``botocore``] Update organizations client to latest version +* api-change:``mq``: [``botocore``] Update mq client to latest version +* api-change:``redshift``: [``botocore``] Update redshift client to latest version +* api-change:``storagegateway``: [``botocore``] Update storagegateway client to latest version +* api-change:``cloudwatch``: [``botocore``] Update cloudwatch client to latest version +* api-change:``cognito-idp``: [``botocore``] Update cognito-idp client to latest version + + +1.9.130 +======= + +* api-change:``mediaconvert``: [``botocore``] Update mediaconvert client to latest version +* api-change:``glue``: [``botocore``] Update glue client to latest version +* api-change:``comprehend``: [``botocore``] Update comprehend client to latest version +* api-change:``iot1click-devices``: [``botocore``] Update iot1click-devices client to latest version +* api-change:``medialive``: [``botocore``] Update medialive client to latest version + + +1.9.129 +======= + +* api-change:``eks``: [``botocore``] Update eks client to latest version +* api-change:``iam``: [``botocore``] Update iam client to latest version + + +1.9.128 +======= + +* api-change:``batch``: [``botocore``] Update batch client to latest version +* api-change:``comprehend``: [``botocore``] Update comprehend client to latest version + + +1.9.127 +======= + +* api-change:``securityhub``: [``botocore``] Update securityhub client to latest version +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version +* api-change:``acm``: [``botocore``] Update acm client to latest version + + +1.9.126 +======= + +* api-change:``emr``: [``botocore``] Update emr client to latest version +* api-change:``ssm``: [``botocore``] Update ssm client to latest version + + +1.9.125 +======= + +* api-change:``comprehend``: [``botocore``] Update comprehend client to latest version +* api-change:``cloudwatch``: [``botocore``] Update cloudwatch client to latest version +* api-change:``greengrass``: [``botocore``] Update greengrass client to latest version + + +1.9.124 +======= + +* api-change:``servicecatalog``: [``botocore``] Update servicecatalog client to latest version +* api-change:``medialive``: [``botocore``] Update medialive client to latest version +* api-change:``pinpoint-email``: [``botocore``] Update pinpoint-email client to latest version +* api-change:``workspaces``: [``botocore``] Update workspaces client to latest version + + +1.9.123 +======= + +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version +* api-change:``appmesh``: [``botocore``] Update appmesh client to latest version +* api-change:``ecs``: [``botocore``] Update ecs client to latest version +* api-change:``elbv2``: [``botocore``] Update elbv2 client to latest version +* api-change:``transfer``: [``botocore``] Update transfer client to latest version +* api-change:``storagegateway``: [``botocore``] Update storagegateway client to latest version +* api-change:``s3``: [``botocore``] Update s3 client to latest version + + +1.9.122 +======= + +* api-change:``workmail``: [``botocore``] Update workmail client to latest version +* api-change:``glue``: [``botocore``] Update glue client to latest version + + +1.9.121 +======= + +* api-change:``iotanalytics``: [``botocore``] Update iotanalytics client to latest version +* api-change:``robomaker``: [``botocore``] Update robomaker client to latest version +* api-change:``directconnect``: [``botocore``] Update directconnect client to latest version +* api-change:``mediaconvert``: [``botocore``] Update mediaconvert client to latest version +* api-change:``transcribe``: [``botocore``] Update transcribe client to latest version +* api-change:``fms``: [``botocore``] Update fms client to latest version +* api-change:``iot1click-devices``: [``botocore``] Update iot1click-devices client to latest version + + +1.9.120 +======= + +* api-change:``iot1click-projects``: [``botocore``] Update iot1click-projects client to latest version +* api-change:``transcribe``: [``botocore``] Update transcribe client to latest version + + +1.9.119 +======= + +* api-change:``iot``: [``botocore``] Update iot client to latest version +* api-change:``lightsail``: [``botocore``] Update lightsail client to latest version +* api-change:``autoscaling``: [``botocore``] Update autoscaling client to latest version +* api-change:``events``: [``botocore``] Update events client to latest version +* api-change:``cognito-idp``: [``botocore``] Update cognito-idp client to latest version + + +1.9.118 +======= + +* api-change:``cognito-identity``: [``botocore``] Update cognito-identity client to latest version +* api-change:``codepipeline``: [``botocore``] Update codepipeline client to latest version +* api-change:``meteringmarketplace``: [``botocore``] Update meteringmarketplace client to latest version + + +1.9.117 +======= + +* api-change:``config``: [``botocore``] Update config client to latest version +* api-change:``eks``: [``botocore``] Update eks client to latest version + + +1.9.116 +======= + +* api-change:``dms``: [``botocore``] Update dms client to latest version +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version +* api-change:``chime``: [``botocore``] Update chime client to latest version + + +1.9.115 +======= + +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version +* api-change:``config``: [``botocore``] Update config client to latest version +* api-change:``acm``: [``botocore``] Update acm client to latest version +* api-change:``iot``: [``botocore``] Update iot client to latest version +* api-change:``acm-pca``: [``botocore``] Update acm-pca client to latest version +* api-change:``cloudwatch``: [``botocore``] Update cloudwatch client to latest version +* api-change:``sagemaker``: [``botocore``] Update sagemaker client to latest version + + +1.9.114 +======= + +* api-change:``config``: [``botocore``] Update config client to latest version +* api-change:``logs``: [``botocore``] Update logs client to latest version + + +1.9.113 +======= + +* api-change:``serverlessrepo``: [``botocore``] Update serverlessrepo client to latest version + + +1.9.112 +======= + +* api-change:``iot``: [``botocore``] Update iot client to latest version +* api-change:``quicksight``: [``botocore``] Update quicksight client to latest version +* api-change:``glue``: [``botocore``] Update glue client to latest version +* api-change:``ce``: [``botocore``] Update ce client to latest version +* api-change:``elasticbeanstalk``: [``botocore``] Update elasticbeanstalk client to latest version +* api-change:``rekognition``: [``botocore``] Update rekognition client to latest version + + +1.9.111 +======= + +* api-change:``s3``: [``botocore``] Update s3 client to latest version +* api-change:``codebuild``: [``botocore``] Update codebuild client to latest version +* api-change:``sagemaker``: [``botocore``] Update sagemaker client to latest version + + +1.9.110 +======= + +* api-change:``gamelift``: [``botocore``] Update gamelift client to latest version +* api-change:``greengrass``: [``botocore``] Update greengrass client to latest version +* api-change:``appmesh``: [``botocore``] Update appmesh client to latest version +* api-change:``rds``: [``botocore``] Update rds client to latest version +* api-change:``medialive``: [``botocore``] Update medialive client to latest version +* api-change:``autoscaling``: [``botocore``] Update autoscaling client to latest version +* api-change:``ecs``: [``botocore``] Update ecs client to latest version + + +1.9.109 +======= + +* api-change:``directconnect``: [``botocore``] Update directconnect client to latest version +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version + + +1.9.108 +======= + +* api-change:``textract``: [``botocore``] Update textract client to latest version +* api-change:``storagegateway``: [``botocore``] Update storagegateway client to latest version +* api-change:``medialive``: [``botocore``] Update medialive client to latest version +* api-change:``codedeploy``: [``botocore``] Update codedeploy client to latest version + + +1.9.107 +======= + +* api-change:``mediapackage``: [``botocore``] Update mediapackage client to latest version +* api-change:``ssm``: [``botocore``] Update ssm client to latest version + + +1.9.106 +======= + +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version +* api-change:``autoscaling-plans``: [``botocore``] Update autoscaling-plans client to latest version + + +1.9.105 +======= + +* api-change:``ssm``: [``botocore``] Update ssm client to latest version +* api-change:``apigatewayv2``: [``botocore``] Update apigatewayv2 client to latest version +* api-change:``alexaforbusiness``: [``botocore``] Update alexaforbusiness client to latest version +* api-change:``application-autoscaling``: [``botocore``] Update application-autoscaling client to latest version + + +1.9.104 +======= + +* api-change:``waf-regional``: [``botocore``] Update waf-regional client to latest version +* api-change:``waf``: [``botocore``] Update waf client to latest version + + +1.9.103 +======= + +* api-change:``discovery``: [``botocore``] Update discovery client to latest version +* api-change:``organizations``: [``botocore``] Update organizations client to latest version +* api-change:``resource-groups``: [``botocore``] Update resource-groups client to latest version +* api-change:``opsworkscm``: [``botocore``] Update opsworkscm client to latest version +* api-change:``pinpoint``: [``botocore``] Update pinpoint client to latest version +* api-change:``mediaconvert``: [``botocore``] Update mediaconvert client to latest version +* api-change:``cur``: [``botocore``] Update cur client to latest version + + +1.9.102 +======= + +* api-change:``elbv2``: [``botocore``] Update elbv2 client to latest version +* api-change:``mediastore``: [``botocore``] Update mediastore client to latest version +* api-change:``ce``: [``botocore``] Update ce client to latest version +* api-change:``autoscaling``: [``botocore``] Update autoscaling client to latest version + + +1.9.101 +======= + +* api-change:``athena``: [``botocore``] Update athena client to latest version +* api-change:``glue``: [``botocore``] Update glue client to latest version +* api-change:``stepfunctions``: [``botocore``] Update stepfunctions client to latest version +* api-change:``cloud9``: [``botocore``] Update cloud9 client to latest version + + +1.9.100 +======= + +* api-change:``kinesis-video-archived-media``: [``botocore``] Update kinesis-video-archived-media client to latest version +* api-change:``workdocs``: [``botocore``] Update workdocs client to latest version +* api-change:``codebuild``: [``botocore``] Update codebuild client to latest version +* api-change:``cloudwatch``: [``botocore``] Update cloudwatch client to latest version +* api-change:``organizations``: [``botocore``] Update organizations client to latest version +* api-change:``kinesisvideo``: [``botocore``] Update kinesisvideo client to latest version +* api-change:``kinesis-video-media``: [``botocore``] Update kinesis-video-media client to latest version +* api-change:``transfer``: [``botocore``] Update transfer client to latest version + + +1.9.99 +====== + +* api-change:``codecommit``: [``botocore``] Update codecommit client to latest version +* api-change:``directconnect``: [``botocore``] Update directconnect client to latest version +* api-change:``medialive``: [``botocore``] Update medialive client to latest version + + +1.9.98 +====== + +* api-change:``iot``: [``botocore``] Update iot client to latest version +* api-change:``ssm``: [``botocore``] Update ssm client to latest version +* api-change:``ds``: [``botocore``] Update ds client to latest version +* enhancement:Paginator: [``botocore``] Add additional paginators for CloudFormation +* api-change:``efs``: [``botocore``] Update efs client to latest version + + +1.9.97 +====== + +* api-change:``athena``: [``botocore``] Update athena client to latest version +* api-change:``secretsmanager``: [``botocore``] Update secretsmanager client to latest version + + +1.9.96 +====== + +* api-change:``chime``: [``botocore``] Update chime client to latest version +* api-change:``application-autoscaling``: [``botocore``] Update application-autoscaling client to latest version +* api-change:``iot``: [``botocore``] Update iot client to latest version + + +1.9.95 +====== + +* api-change:``kinesisvideo``: [``botocore``] Update kinesisvideo client to latest version +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version + + +1.9.94 +====== + +* api-change:``rekognition``: [``botocore``] Update rekognition client to latest version +* api-change:``mediatailor``: [``botocore``] Update mediatailor client to latest version +* api-change:``efs``: [``botocore``] Update efs client to latest version + + +1.9.93 +====== + +* api-change:``lambda``: [``botocore``] Update lambda client to latest version + + +1.9.92 +====== + +* api-change:``appstream``: [``botocore``] Update appstream client to latest version +* api-change:``codebuild``: [``botocore``] Update codebuild client to latest version +* api-change:``mediapackage``: [``botocore``] Update mediapackage client to latest version + + +1.9.91 +====== + +* api-change:``discovery``: [``botocore``] Update discovery client to latest version +* api-change:``ecs``: [``botocore``] Update ecs client to latest version +* api-change:``dlm``: [``botocore``] Update dlm client to latest version + + +1.9.90 +====== + +* api-change:``es``: [``botocore``] Update es client to latest version +* api-change:``medialive``: [``botocore``] Update medialive client to latest version +* api-change:``gamelift``: [``botocore``] Update gamelift client to latest version +* api-change:``robomaker``: [``botocore``] Update robomaker client to latest version + + +1.9.89 +====== + +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version +* api-change:``fsx``: [``botocore``] Update fsx client to latest version + + +1.9.88 +====== + +* api-change:``shield``: [``botocore``] Update shield client to latest version +* api-change:``servicecatalog``: [``botocore``] Update servicecatalog client to latest version +* api-change:``ec2``: [``botocore``] Update ec2 client to latest version + + +1.9.87 +====== + +* api-change:``ecs``: [``botocore``] Update ecs client to latest version +* api-change:``application-autoscaling``: [``botocore``] Update application-autoscaling client to latest version +* api-change:``workspaces``: [``botocore``] Update workspaces client to latest version +* api-change:``codecommit``: [``botocore``] Update codecommit client to latest version + + 1.9.86 ====== diff --git a/LICENSE b/LICENSE index 761ea7c..f433b1a 100644 --- a/LICENSE +++ b/LICENSE @@ -1,12 +1,177 @@ -Copyright 2013-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. -Licensed under the Apache License, Version 2.0 (the "License"). You -may not use this file except in compliance with the License. A copy of -the License is located at + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - http://aws.amazon.com/apache2.0/ + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -or in the "license" file accompanying this file. This file is -distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF -ANY KIND, either express or implied. See the License for the specific -language governing permissions and limitations under the License. + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/NOTICE b/NOTICE new file mode 100644 index 0000000..eff609f --- /dev/null +++ b/NOTICE @@ -0,0 +1,2 @@ +boto3 +Copyright 2013-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. diff --git a/boto3/__init__.py b/boto3/__init__.py index 92915bc..a5677c8 100644 --- a/boto3/__init__.py +++ b/boto3/__init__.py @@ -17,7 +17,7 @@ from boto3.session import Session __author__ = 'Amazon Web Services' -__version__ = '1.9.86' +__version__ = '1.9.253' # The default Boto3 session; autoloaded when needed. diff --git a/boto3/compat.py b/boto3/compat.py index 3a7a832..4a26219 100644 --- a/boto3/compat.py +++ b/boto3/compat.py @@ -26,6 +26,11 @@ if six.PY3: else: SOCKET_ERROR = socket.error +if six.PY3: + import collections.abc as collections_abc +else: + import collections as collections_abc + if sys.platform.startswith('win'): def rename_file(current_filename, new_filename): diff --git a/boto3/dynamodb/transform.py b/boto3/dynamodb/transform.py index 6b8002c..e38f75b 100644 --- a/boto3/dynamodb/transform.py +++ b/boto3/dynamodb/transform.py @@ -11,8 +11,8 @@ # ANY KIND, either express or implied. See the License for the specific # language governing permissions and limitations under the License. import copy -from collections import Mapping, MutableSequence +from boto3.compat import collections_abc from boto3.dynamodb.types import TypeSerializer, TypeDeserializer from boto3.dynamodb.conditions import ConditionBase from boto3.dynamodb.conditions import ConditionExpressionBuilder @@ -262,7 +262,7 @@ class ParameterTransformer(object): def _transform_structure(self, model, params, transformation, target_shape): - if not isinstance(params, Mapping): + if not isinstance(params, collections_abc.Mapping): return for param in params: if param in model.members: @@ -276,7 +276,7 @@ class ParameterTransformer(object): target_shape) def _transform_map(self, model, params, transformation, target_shape): - if not isinstance(params, Mapping): + if not isinstance(params, collections_abc.Mapping): return value_model = model.value value_shape = value_model.name @@ -288,7 +288,7 @@ class ParameterTransformer(object): value_model, params[key], transformation, target_shape) def _transform_list(self, model, params, transformation, target_shape): - if not isinstance(params, MutableSequence): + if not isinstance(params, collections_abc.MutableSequence): return member_model = model.member member_shape = member_model.name diff --git a/boto3/dynamodb/types.py b/boto3/dynamodb/types.py index 56ee1f8..14aba9c 100644 --- a/boto3/dynamodb/types.py +++ b/boto3/dynamodb/types.py @@ -10,10 +10,11 @@ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF # ANY KIND, either express or implied. See the License for the specific # language governing permissions and limitations under the License. -from collections import Mapping, Set from decimal import Decimal, Context, Clamped from decimal import Overflow, Inexact, Underflow, Rounded +from boto3.compat import collections_abc + from botocore.compat import six @@ -174,7 +175,7 @@ class TypeSerializer(object): return False def _is_set(self, value): - if isinstance(value, Set): + if isinstance(value, collections_abc.Set): return True return False @@ -185,7 +186,7 @@ class TypeSerializer(object): return False def _is_map(self, value): - if isinstance(value, Mapping): + if isinstance(value, collections_abc.Mapping): return True return False diff --git a/docs/source/conf.py b/docs/source/conf.py index 7a3ea24..bd7614a 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -51,7 +51,7 @@ master_doc = 'index' # General information about the project. project = 'Boto 3 Docs' -copyright = '2014, Amazon.com, Inc.' +copyright = '2019, Amazon Web Services, Inc' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the diff --git a/docs/source/guide/cloud9.rst b/docs/source/guide/cloud9.rst index b7e2641..82baf74 100644 --- a/docs/source/guide/cloud9.rst +++ b/docs/source/guide/cloud9.rst @@ -95,7 +95,7 @@ directory, where :code:`your-environment-name` is the name of your development environment. To learn how to work with these and other code examples, see -:ref:`Code Examples `. +:ref:`Code Examples `. Step 6: Run and Debug Code -------------------------- diff --git a/docs/source/guide/configuration.rst b/docs/source/guide/configuration.rst index e5e378f..868d6c8 100644 --- a/docs/source/guide/configuration.rst +++ b/docs/source/guide/configuration.rst @@ -202,12 +202,15 @@ to AWS STS on your behalf. It will handle in memory caching as well as refreshing credentials as needed. You can specify the following configuration values for configuring an -IAM role in boto3: - +IAM role in boto3. For more information about a particular setting, see +the section `Configuration File`_. * ``role_arn`` - The ARN of the role you want to assume. * ``source_profile`` - The boto3 profile that contains credentials we should use for the initial ``AssumeRole`` call. +* ``credential_source`` - The resource (Amazon EC2 instance profile, Amazon + ECS container role, or environment variable) that contains the credentials to + use for the initial ``AssumeRole`` call. * ``external_id`` - A unique identifier that is used by third parties to assume a role in their customers' accounts. This maps to the ``ExternalId`` parameter in the ``AssumeRole`` operation. This is an optional parameter. @@ -223,8 +226,9 @@ IAM role in boto3: maps to the ``RoleSessionName`` parameter in the ``AssumeRole`` operation. This is an optional parameter. If you do not provide this value, a session name will be automatically generated. +* ``duration_seconds`` - The length of time in seconds of the role session. -If you do not have MFA authentication required, then you only need to specify a +If MFA authentication is not enabled then you only need to specify a ``role_arn`` and a ``source_profile``. When you specify a profile that has IAM role configuration, boto3 will make an @@ -236,11 +240,11 @@ temporary credentials to disk. This means that temporary credentials from the All clients created from that session will share the same temporary credentials. -If you specify an ``mfa_serial``, then the first time an ``AssumeRole`` call is -made, you will be prompted to enter the MFA code. **Your code will block until -you enter your MFA code.** You'll need to keep this in mind if you have an -``mfa_serial`` configured but would like to use boto3 in some automated script. - +If you specify ``mfa_serial``, then the first time an ``AssumeRole`` call is +made, you will be prompted to enter the MFA code. **Program execution will +block until you enter the MFA code.** You'll need to keep this in mind if +you have an ``mfa_serial`` device configured, but would like to use boto3 +in an automated script. Below is an example configuration for the minimal amount of configuration needed to configure an assume role profile:: @@ -258,6 +262,58 @@ needed to configure an assume role profile:: See `Using IAM Roles`_ for general information on IAM roles. +Assume Role With Web Identity Provider +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Within the ``~/.aws/config`` file, you can also configure a profile to indicate +that boto3 should assume a role. When you do this, boto3 will automatically +make the corresponding ``AssumeRoleWithWebIdentity`` calls to AWS STS on your +behalf. It will handle in memory caching as well as refreshing credentials as +needed. + +You can specify the following configuration values for configuring an +IAM role in boto3: + + +* ``role_arn`` - The ARN of the role you want to assume. +* ``web_identity_token_file`` - The path to a file which contains an OAuth 2.0 + access token or OpenID Connect ID token that is provided by the identity + provider. The contents of this file will be loaded and passed as the + ``WebIdentityToken`` argument to the ``AssumeRoleWithWebIdentity`` operation. +* ``role_session_name`` - The name applied to this assume-role session. This + value affects the assumed role user ARN (such as + arn:aws:sts::123456789012:assumed-role/role_name/role_session_name). This + maps to the ``RoleSessionName`` parameter in the + ``AssumeRoleWithWebIdentity`` operation. This is an optional parameter. If + you do not provide this value, a session name will be automatically + generated. + +Below is an example configuration for the minimal amount of configuration +needed to configure an assume role with web identity profile:: + + # In ~/.aws/config + [profile web-identity] + role_arn=arn:aws:iam:... + web_identity_token_file=/path/to/a/token + +This provider can also be configured via the environment: + +``AWS_ROLE_ARN`` + The ARN of the role you want to assume. + +``AWS_WEB_IDENTITY_TOKEN_FILE`` + The path to the web identity token file. + +``AWS_ROLE_SESSION_NAME`` + The name applied to this assume-role session. + +.. note:: + + These environment variables currently only apply to the assume role with + web identity provider and do not apply to the general assume role provider + configuration. + + Boto2 Config ~~~~~~~~~~~~ @@ -387,7 +443,6 @@ Environment Variable Configuration separated with the ``os.pathsep`` character which is ``:`` on linux and ``;`` on windows. - Configuration File ~~~~~~~~~~~~~~~~~~ @@ -402,19 +457,64 @@ If your profile name has spaces, you'll need to surround this value in quotes: ``[profile "my profile name"]``. Below are all the config variables supported in the ``~/.aws/config`` file: -``region`` - The default region to use, e.g. ``us-west-1``, ``us-west-2``, etc. When specifying a region inline during client initialization, this property is named ``region_name`` +``api_versions`` + Specifies the API version to use for a particular AWS service. + + The ``api_versions`` settings are nested configuration values that require special + formatting in the AWS configuration file. If the values are set by the + AWS CLI or programmatically by an SDK, the formatting is handled + automatically. If they are set by manually editing the AWS configuration + file, the required format is shown below. Notice the indentation of each + value. + :: + + [default] + region = us-east-1 + api_versions = + ec2 = 2015-03-01 + cloudfront = 2015-09-17 + ``aws_access_key_id`` The access key to use. ``aws_secret_access_key`` The secret access key to use. ``aws_session_token`` - The session token to use. This is typically only needed when using - temporary credentials. Note ``aws_security_token`` is supported for - backwards compatibility. + The session token to use. This is typically needed only when using + temporary credentials. Note ``aws_security_token`` is supported for + backward compatibility. ``ca_bundle`` - The CA bundle to use. See the docs above on ``AWS_CA_BUNDLE`` for - more information. + The CA bundle to use. For more information, see the above description + of the ``AWS_CA_BUNDLE`` environment variable. +``credential_process`` + Specifies an external command to run to generate or retrieve + authentication credentials. For more information, + see `Sourcing Credentials with an External Process`_. +``credential_source`` + To invoke an AWS service from an Amazon EC2 instance, you can use + an IAM role attached to either an EC2 instance profile or an Amazon ECS + container. In such a scenario, use the ``credential_source`` setting to + specify where to find the credentials. + + The ``credential_source`` and ``source_profile`` settings are mutually + exclusive. + + The following values are supported. + + ``Ec2InstanceMetadata`` + Use the IAM role attached to the Amazon EC2 instance profile. + + ``EcsContainer`` + Use the IAM role attached to the Amazon ESC container. + + ``Environment`` + Retrieve the credentials from environment variables. + +``duration_seconds`` + The length of time in seconds of the role session. The value can range + from 900 seconds (15 minutes) to the maximum session duration setting + for the role. The default value is 3600 seconds (one hour). +``external_id`` + Unique identifier to pass when making ``AssumeRole`` calls. ``metadata_service_timeout`` The number of seconds before timing out when retrieving data from the instance metadata service. See the docs above on @@ -423,6 +523,8 @@ in the ``~/.aws/config`` file: The number of attempts to make before giving up when retrieving data from the instance metadata service. See the docs above on ``AWS_METADATA_SERVICE_NUM_ATTEMPTS`` for more information. +``mfa_serial`` + Serial number of ARN of an MFA device to use when assuming a role. ``parameter_validation`` Disable parameter validation (default is true; parameters are validated by default). This is a boolean value that can have @@ -432,38 +534,93 @@ in the ``~/.aws/config`` file: parameters provided, type checking, no unknown parameters, minimum length checks, etc. You generally should leave parameter validation enabled. +``region`` + The default region to use, e.g. ``us-west-1``, ``us-west-2``, etc. When + specifying a region inline during client initialization, this property + is named ``region_name`` ``role_arn`` The ARN of the role you want to assume. -``source_profile`` - The profile name that contains credentials we should use for the - initial ``AssumeRole`` call. -``external_id`` - Unique identifier to pass when making ``AssumeRole`` calls. -``mfa_serial`` - Serial number of ARN of an MFA device to use when assuming a role. ``role_session_name`` The role name to use when assuming a role. If this value is not provided, a session name will be automatically generated. +``web_identity_token_file`` + The path to a file which contains an OAuth 2.0 access token or OpenID + Connect ID token that is provided by the identity provider. The contents of + this file will be loaded and passed as the ``WebIdentityToken`` argument to + the ``AssumeRoleWithWebIdentity`` operation. ``s3`` - Set S3 specific configuration data. You typically will not need to - set these values. Boto3 will automatically switching signature versions - and addressing styles if necessary. - This is a nested configuration value. See the Nested Configuration section - for more information on the format. The sub config keys supported for - ``s3`` are: + Set S3-specific configuration data. Typically, these values do not need + to be set. + + The ``s3`` settings are nested configuration values that require special + formatting in the AWS configuration file. If the values are set by the + AWS CLI or programmatically by an SDK, the formatting is handled + automatically. If they are set by manually editing the AWS configuration + file, the required format is shown below. Notice the indentation of each + value. + :: - * ``addressing_style``: Specifies which addressing style to use. - This controls if the bucket name is in the hostname or part of - the URL. Value values are: ``path``, ``virtual``, - and ``auto``. - * ``signature_version``: Which AWS signature version to use when - signing requests. Value values are: ``s3`` and ``s3v4``. + [default] + region = us-east-1 + s3 = + addressing_style = path + signature_version = s3v4 + + * ``addressing_style``: The S3 addressing style. When necessary, Boto + automatically switches the addressing style to an appropriate value. + The following values are supported. + + ``auto`` + (Default) Attempts to use ``virtual``, but falls back to ``path`` + if necessary. + + ``path`` + Bucket name is included in the URI path. + + ``virtual`` + Bucket name is included in the hostname. + + * ``payload_signing_enabled``: Specifies whether to include an SHA-256 + checksum with Amazon Signature Version 4 payloads. Valid settings are + ``true`` or ``false``. + + For streaming uploads (``UploadPart`` and ``PutObject``) that use HTTPS + and include a ``content-md5`` header, this setting is disabled by default. + * ``signature_version``: The AWS signature version to use when signing + requests. When necessary, Boto automatically switches the signature + version to an appropriate value. The following values are recognized. + + ``s3v4`` + (Default) Signature Version 4 + + ``s3`` + (Deprecated) Signature Version 2 + + * ``use_accelerate_endpoint``: Specifies whether to use the S3 Accelerate + endpoint. The bucket must be enabled to use S3 Accelerate. Valid settings + are ``true`` or ``false``. Default: ``false`` + + Either ``use_accelerate_endpoint`` or ``use_dualstack_endpoint`` can be + enabled, but not both. + * ``use_dualstack_endpoint``: Specifies whether to direct all Amazon S3 + requests to the dual IPv4/IPv6 endpoint for the configured region. Valid + settings are ``true`` or ``false``. Default: ``false`` + + Either ``use_accelerate_endpoint`` or ``use_dualstack_endpoint`` can be + enabled, but not both. +``source_profile`` + The profile name that contains credentials to use for the initial + ``AssumeRole`` call. + + The ``credential_source`` and ``source_profile`` settings are mutually + exclusive. ``tcp_keepalive`` Toggles the TCP Keep-Alive socket option used when creating connections. By default this value is ``false``; TCP Keep-Alive will not be used when creating connections. To enable TCP Keep-Alive set this value to ``true``, enabling TCP Keep-Alive with the system default configurations. - + .. _IAM Roles for Amazon EC2: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html .. _Using IAM Roles: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html +.. _Sourcing Credentials with an External Process: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sourcing-external.html diff --git a/docs/source/guide/cw-example-subscription-filters.rst b/docs/source/guide/cw-example-subscription-filters.rst index 52ee1c9..d5fa6b2 100644 --- a/docs/source/guide/cw-example-subscription-filters.rst +++ b/docs/source/guide/cw-example-subscription-filters.rst @@ -68,7 +68,7 @@ Prerequisite Tasks "Effect": "Allow", "Action": [ "logs:CreateLogGroup", - "logs:CrateLogStream", + "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" diff --git a/docs/source/guide/cw-examples.rst b/docs/source/guide/cw-examples.rst index eccef19..92534cf 100644 --- a/docs/source/guide/cw-examples.rst +++ b/docs/source/guide/cw-examples.rst @@ -15,7 +15,7 @@ Amazon CloudWatch Examples ########################## You can use the following examples to access Amazon Cloudwatch (CloudWatch) by using Amazon Boto. For more -information about ClodWatch, see the `CloudWatch Developer Guide `_. +information about CloudWatch, see the `CloudWatch Developer Guide `_. **Examples** diff --git a/docs/source/guide/dynamodb.rst b/docs/source/guide/dynamodb.rst index fd39252..c65be2a 100644 --- a/docs/source/guide/dynamodb.rst +++ b/docs/source/guide/dynamodb.rst @@ -41,7 +41,6 @@ In order to create a new table, use the 'AttributeName': 'last_name', 'AttributeType': 'S' }, - ], ProvisionedThroughput={ 'ReadCapacityUnits': 5, diff --git a/docs/source/guide/examples.rst b/docs/source/guide/examples.rst index ad44f1b..53f7b71 100644 --- a/docs/source/guide/examples.rst +++ b/docs/source/guide/examples.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the @@ -14,15 +14,29 @@ Code Examples ############# -This section provides code examples that demonstrate common Amazon Web Services scenarios using the -Amazon Web Services (AWS) SDK for Python. +This section describes code examples that demonstrate how to use the AWS SDK +for Python to call various AWS services. The source files for the examples, +plus additional example programs, are available in the `AWS Code +Catalog `_. + +To propose a new code example for the AWS documentation team to consider producing, create a new request. +The team is looking to produce code examples that cover broader scenarios and use cases, +versus simple code snippets that cover only individual API calls. For instructions, see +the "Proposing new code examples" section in the +`Readme on GitHub `_. + +Before running an example, your AWS credentials must be configured as +described in :doc:`quickstart`. .. toctree:: :maxdepth: 1 cw-examples + dynamodb ec2-examples iam-examples + kms-examples s3-examples + secrets-manager ses-examples sqs-examples diff --git a/docs/source/guide/index.rst b/docs/source/guide/index.rst index 36508ec..4165edf 100644 --- a/docs/source/guide/index.rst +++ b/docs/source/guide/index.rst @@ -1,22 +1,25 @@ +.. Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + .. _user_guides: +++++++++++ User Guides +++++++++++ -Migration Guides -================ -.. toctree:: - new - migration - upgrading - - -General Feature Guides -====================== +General Feature Guide +===================== .. toctree:: + :maxdepth: 1 resources collections @@ -27,13 +30,22 @@ General Feature Guides events -Service Feature Guides -====================== +Tool Guide +========== .. toctree:: + :maxdepth: 1 cloud9 - dynamodb - s3 - secrets-manager sdk-metrics + + +Migration Guide +=============== + +.. toctree:: + :maxdepth: 1 + + new + migration + upgrading diff --git a/docs/source/guide/kms-example-encrypt-decrypt-file.rst b/docs/source/guide/kms-example-encrypt-decrypt-file.rst new file mode 100644 index 0000000..007629c --- /dev/null +++ b/docs/source/guide/kms-example-encrypt-decrypt-file.rst @@ -0,0 +1,332 @@ +.. Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + +.. _aws-boto3-kms-examples-encrypt-decrypt-file: + +************************** +Encrypt and Decrypt a File +************************** + +The example program uses AWS KMS keys to encrypt and decrypt a file. + +A master key, also called a Customer Master Key or CMK, is created and used to generate a data key. +The data key is then used to encrypt a disk file. The encrypted data key is stored within +the encrypted file. To decrypt the file, the data key is decrypted and then used to decrypt +the rest of the file. This manner of using master and data keys is called envelope encryption. + +To encrypt and decrypt data, the example uses the well-known Python ``cryptography`` package. +This package is not part of the Python standard library and must be installed separately, for +example, with the ``pip`` command. + +:: + + pip install cryptography + +Each section describes a single function from the example's `entire +source file `_. + + +Retrieve an Existing Master Key +=============================== + +Master keys are created, managed, and stored within AWS KMS. A KMS master key is also referred to +as a customer master key or CMK. An AWS storage cost is incurred for each CMK, therefore, one CMK is +often used to manage multiple data keys. + +The example ``retrieve_cmk`` function searches for an existing CMK. A key description is specified +when a CMK is created, and this description is used to identify and retrieve the desired key. If +many CMKs exist, they are processed in batches until either the desired key is found or all keys are +examined. + +If the example function finds the desired CMK, it returns both the CMK's ID and its ARN (Amazon +Resource Name). Either of these identifiers can be used to reference the CMK in subsequent calls +to AWS KMS methods. + +.. code-block:: python + + def retrieve_cmk(desc): + """Retrieve an existing KMS CMK based on its description + + :param desc: Description of CMK specified when the CMK was created + :return Tuple(KeyId, KeyArn) where: + KeyId: CMK ID + KeyArn: Amazon Resource Name of CMK + :return Tuple(None, None) if a CMK with the specified description was + not found + """ + + # Retrieve a list of existing CMKs + # If more than 100 keys exist, retrieve and process them in batches + kms_client = boto3.client('kms') + try: + response = kms_client.list_keys() + except ClientError as e: + logging.error(e) + return None, None + + done = False + while not done: + for cmk in response['Keys']: + # Get info about the key, including its description + try: + key_info = kms_client.describe_key(KeyId=cmk['KeyArn']) + except ClientError as e: + logging.error(e) + return None, None + + # Is this the key we're looking for? + if key_info['KeyMetadata']['Description'] == desc: + return cmk['KeyId'], cmk['KeyArn'] + + # Are there more keys to retrieve? + if not response['Truncated']: + # No, the CMK was not found + logging.debug('A CMK with the specified description was not found') + done = True + else: + # Yes, retrieve another batch + try: + response = kms_client.list_keys(Marker=response['NextMarker']) + except ClientError as e: + logging.error(e) + return None, None + + # All existing CMKs were checked and the desired key was not found + return None, None + + +Create a Customer Master Key +============================ + +If the example does not find an existing CMK, it creates a new one and returns its ID and ARN. + +.. code-block:: python + + def create_cmk(desc='Customer Master Key'): + """Create a KMS Customer Master Key + + The created CMK is a Customer-managed key stored in AWS KMS. + + :param desc: key description + :return Tuple(KeyId, KeyArn) where: + KeyId: AWS globally-unique string ID + KeyArn: Amazon Resource Name of the CMK + :return Tuple(None, None) if error + """ + + # Create CMK + kms_client = boto3.client('kms') + try: + response = kms_client.create_key(Description=desc) + except ClientError as e: + logging.error(e) + return None, None + + # Return the key ID and ARN + return response['KeyMetadata']['KeyId'], response['KeyMetadata']['Arn'] + + +Create a Data Key +================= + +To encrypt a file, the example ``create_data_key`` function creates a data key. The data key is +customer managed and does not incur an AWS storage cost. The example creates a data key for +each file it encrypts, but it's possible to use a single data key to encrypt multiple files. + +The example function returns the data key in both its plaintext and encrypted forms. The +plaintext form is used to encrypt the data. The encrypted form will be stored with the encrypted +file. The data key is associated with a CMK which is capable of decrypting the encrypted data key +when necessary. + + +.. code-block:: python + + def create_data_key(cmk_id, key_spec='AES_256'): + """Generate a data key to use when encrypting and decrypting data + + :param cmk_id: KMS CMK ID or ARN under which to generate and encrypt the + data key. + :param key_spec: Length of the data encryption key. Supported values: + 'AES_128': Generate a 128-bit symmetric key + 'AES_256': Generate a 256-bit symmetric key + :return Tuple(EncryptedDataKey, PlaintextDataKey) where: + EncryptedDataKey: Encrypted CiphertextBlob data key as binary string + PlaintextDataKey: Plaintext base64-encoded data key as binary string + :return Tuple(None, None) if error + """ + + # Create data key + kms_client = boto3.client('kms') + try: + response = kms_client.generate_data_key(KeyId=cmk_id, KeySpec=key_spec) + except ClientError as e: + logging.error(e) + return None, None + + # Return the encrypted and plaintext data key + return response['CiphertextBlob'], base64.b64encode(response['Plaintext']) + + +Encrypt a File +============== + +The ``encrypt_file`` function creates a data key and uses it to encrypt the contents of a disk file. + +The encryption operation is performed by a ``Fernet`` object created by the Python ``cryptography`` +package. + +The encrypted form of the data key is saved within the encrypted file and will be used in the future +to decrypt the file. The encrypted file can be decrypted by any program with the credentials to +decrypt the encrypted data key. + +.. code-block:: python + + def encrypt_file(filename, cmk_id): + """Encrypt a file using an AWS KMS CMK + + A data key is generated and associated with the CMK. + The encrypted data key is saved with the encrypted file. This enables the + file to be decrypted at any time in the future and by any program that + has the credentials to decrypt the data key. + The encrypted file is saved to .encrypted + Limitation: The contents of filename must fit in memory. + + :param filename: File to encrypt + :param cmk_id: AWS KMS CMK ID or ARN + :return: True if file was encrypted. Otherwise, False. + """ + + # Read the entire file into memory + try: + with open(filename, 'rb') as file: + file_contents = file.read() + except IOError as e: + logging.error(e) + return False + + # Generate a data key associated with the CMK + # The data key is used to encrypt the file. Each file can use its own + # data key or data keys can be shared among files. + # Specify either the CMK ID or ARN + data_key_encrypted, data_key_plaintext = create_data_key(cmk_id) + if data_key_encrypted is None: + return False + logging.info('Created new AWS KMS data key') + + # Encrypt the file + f = Fernet(data_key_plaintext) + file_contents_encrypted = f.encrypt(file_contents) + + # Write the encrypted data key and encrypted file contents together + try: + with open(filename + '.encrypted', 'wb') as file_encrypted: + file_encrypted.write(len(data_key_encrypted).to_bytes(NUM_BYTES_FOR_LEN, + byteorder='big')) + file_encrypted.write(data_key_encrypted) + file_encrypted.write(file_contents_encrypted) + except IOError as e: + logging.error(e) + return False + + # For the highest security, the data_key_plaintext value should be wiped + # from memory. Unfortunately, this is not possible in Python. However, + # storing the value in a local variable makes it available for garbage + # collection. + return True + + +Decrypt a Data Key +================== + +To decrypt an encrypted file, the encrypted data key used to perform the encryption must first +be decrypted. This operation is performed by the example ``decrypt_data_key`` function which returns +the plaintext form of the key. + +.. code-block:: python + + def decrypt_data_key(data_key_encrypted): + """Decrypt an encrypted data key + + :param data_key_encrypted: Encrypted ciphertext data key. + :return Plaintext base64-encoded binary data key as binary string + :return None if error + """ + + # Decrypt the data key + kms_client = boto3.client('kms') + try: + response = kms_client.decrypt(CiphertextBlob=data_key_encrypted) + except ClientError as e: + logging.error(e) + return None + + # Return plaintext base64-encoded binary data key + return base64.b64encode((response['Plaintext'])) + + +Decrypt a File +============== + +The example ``decrypt_file`` function first extracts the encrypted data key from the encrypted file. It +then decrypts the key to get its plaintext form and uses that to decrypt the file contents. + +The decryption operation is performed by a ``Fernet`` object created by the Python ``cryptography`` +package. + +.. code-block:: python + + def decrypt_file(filename): + """Decrypt a file encrypted by encrypt_file() + + The encrypted file is read from .encrypted + The decrypted file is written to .decrypted + + :param filename: File to decrypt + :return: True if file was decrypted. Otherwise, False. + """ + + # Read the encrypted file into memory + try: + with open(filename + '.encrypted', 'rb') as file: + file_contents = file.read() + except IOError as e: + logging.error(e) + return False + + # The first NUM_BYTES_FOR_LEN bytes contain the integer length of the + # encrypted data key. + # Add NUM_BYTES_FOR_LEN to get index of end of encrypted data key/start + # of encrypted data. + data_key_encrypted_len = int.from_bytes(file_contents[:NUM_BYTES_FOR_LEN], + byteorder='big') \ + + NUM_BYTES_FOR_LEN + data_key_encrypted = file_contents[NUM_BYTES_FOR_LEN:data_key_encrypted_len] + + # Decrypt the data key before using it + data_key_plaintext = decrypt_data_key(data_key_encrypted) + if data_key_plaintext is None: + return False + + # Decrypt the rest of the file + f = Fernet(data_key_plaintext) + file_contents_decrypted = f.decrypt(file_contents[data_key_encrypted_len:]) + + # Write the decrypted file contents + try: + with open(filename + '.decrypted', 'wb') as file_decrypted: + file_decrypted.write(file_contents_decrypted) + except IOError as e: + logging.error(e) + return False + + # The same security issue described at the end of encrypt_file() exists + # here, too, i.e., the wish to wipe the data_key_plaintext value from + # memory. + return True diff --git a/docs/source/guide/kms-examples.rst b/docs/source/guide/kms-examples.rst new file mode 100644 index 0000000..2f7624a --- /dev/null +++ b/docs/source/guide/kms-examples.rst @@ -0,0 +1,33 @@ +.. Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + +.. _aws-boto3-kms-examples: + +############################################# +AWS Key Management Service (AWS KMS) Examples +############################################# + +.. meta:: + :description: Python examples that use the AWS Key Management Service (AWS KMS) + :keywords: KMS + +Encrypting valuable data is a common security practice. The encryption process +typically uses one or more keys, sometimes referred to as data keys and master +keys. A data key is used to encrypt the data. A master key manages one or +more data keys. To prevent the data from being decrypted by unauthorized +users, both keys must be protected, often by being encrypted themselves. +The AWS Key Management Service (AWS KMS) can assist in this key management. + +**Examples** + +.. toctree:: + :maxdepth: 1 + + kms-example-encrypt-decrypt-file diff --git a/docs/source/guide/migration.rst b/docs/source/guide/migration.rst index a96d0e9..f55b966 100644 --- a/docs/source/guide/migration.rst +++ b/docs/source/guide/migration.rst @@ -50,7 +50,7 @@ Once configured, you may begin using Boto 3:: for bucket in boto3.resource('s3').buckets.all(): print(bucket.name) -See the :ref:`tutorial_list` and `Boto 3 Documentation `__ for more information. +See the :ref:`Code Examples ` and `Boto 3 Documentation `__ for more information. The rest of this document will describe specific common usage scenarios of Boto 2 code and how to accomplish the same tasks with Boto 3. diff --git a/docs/source/guide/resources.rst b/docs/source/guide/resources.rst index 0f9599c..9311c1e 100644 --- a/docs/source/guide/resources.rst +++ b/docs/source/guide/resources.rst @@ -186,7 +186,7 @@ Waiters ------- A waiter is similiar to an action. A waiter will poll the status of a resource and suspend execution until the resource reaches the state that is -being polling for or a failure occurs while polling. +being polled for or a failure occurs while polling. Waiters automatically set the resource identifiers as parameters, but allow you to pass additional parameters via keyword arguments. Examples of waiters include:: diff --git a/docs/source/guide/s3-example-access-permissions.rst b/docs/source/guide/s3-example-access-permissions.rst index 58d7d46..f841da8 100644 --- a/docs/source/guide/s3-example-access-permissions.rst +++ b/docs/source/guide/s3-example-access-permissions.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the @@ -8,59 +8,24 @@ either express or implied. See the License for the specific language governing permissions and limitations under the License. -.. _aws-boto3-s3-access-permissions: +################## +Access Permissions +################## -############################################ -Managing Amazon S3 Bucket Access Permissions -############################################ +This section demonstrates how to manage the access permissions for an S3 +bucket or object by using an access control list (ACL). -This Python example shows you how to get or set the access control list for an Amazon S3 bucket. -The Scenario -============ +Get a Bucket Access Control List +================================ -In this example, a Python code is used to display the bucket access control list (ACL) for a selected -bucket. The code uses the AWS SDK for Python to manage Amazon S3 bucket access permissions using this -method of the Amazon S3 client class: - -* `get_bucket_acl `_. - -For more information about access control lists for Amazon S3 buckets, see -`Managing Access with ACLs `_ -in the *Amazon Simple Storage Service Developer Guide*. - -All the example code for the Amazon Web Services (AWS) SDK for Python is available `here on GitHub `_. - -Prerequisite Tasks -================== - -To set up and run this example, you must first complete this task: - -* Configure your AWS credentials, as described in :doc:`quickstart`. - -Get a Specified Bucket Access Control (ACL) List -================================================ - -Access control lists (ACLs) are one of the resource-based access policy option you can use to manage -access to your buckets and objects. You can use ACLs to grant basic read/write permissions to other -AWS accounts. - -The example below shows how to: +The example retrieves the current access control list of an S3 bucket. -* Get the bucket ACL for a specified bucket using - `get_bucket_acl `_. - -Example -------- - .. code-block:: python import boto3 - # Create an S3 client + # Retrieve a bucket's ACL s3 = boto3.client('s3') - - # Call to S3 to retrieve the policy for the given bucket result = s3.get_bucket_acl(Bucket='my-bucket') print(result) - diff --git a/docs/source/guide/s3-example-bucket-policies.rst b/docs/source/guide/s3-example-bucket-policies.rst index 387be54..e351dbe 100644 --- a/docs/source/guide/s3-example-bucket-policies.rst +++ b/docs/source/guide/s3-example-bucket-policies.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the @@ -7,94 +7,50 @@ This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. - -.. _aws-boto3-s3-bucket-policies: -###################################### -Working with Amazon S3 Bucket Policies -###################################### -This Python example shows you how to: +############### +Bucket Policies +############### -* Get the bucket policy of an Amazon S3 bucket. +An S3 bucket can have an optional policy that grants access permissions to +other AWS accounts or AWS Identity and Access Management (IAM) users. Bucket +policies are defined using the same JSON format as a resource-based IAM policy. -* Add or update the bucket policy of an Amazon S3 bucket. -* Delete the bucket policy of an Amazon S3 bucket. +Retrieve a Bucket Policy +======================== -The Scenario -============ - -In this example, Python code is used to get, set, or delete a bucket policy on an Amazon S3 bucket. -The code uses the AWS SDK for Python to configure policy for a selected Amazon S3 bucket using these -methods of the Amazon S3 client class: - -* `get_bucket_policy `_. - -* `put_bucket_policy `_. - -* `delete_bucket_policy `_ - -For more information about bucket policies for Amazon S3 buckets, see -`Using Bucket Policies and User Policies `_ -in the *Amazon Simple Storage Service Developer Guide*. - -All the example code for the Amazon Web Services (AWS) SDK for Python is available `here on GitHub `_. - -Prerequisite Tasks -================== - -To set up and run this example, you must first complete this task: - -* Configure your AWS credentials, as described in :doc:`quickstart`. - -Get the Current Bucket Policy -============================= - -The example below shows how to: - -* Get the bucket ACL for a specified bucket using - `get_bucket_policy `_. - -Example -------- +Retrieve a bucket's policy by calling the AWS SDK for Python +``get_bucket_policy`` method. The method accepts a parameter that specifies +the bucket name. .. code-block:: python import boto3 - # Create an S3 client + # Retrieve the policy of the specified bucket s3 = boto3.client('s3') + result = s3.get_bucket_policy(Bucket='BUCKET_NAME') + print(result['Policy']) - # Call to S3 to retrieve the policy for the given bucket - result = s3.get_bucket_policy(Bucket='my-bucket') - print(result) - +Set a Bucket Policy +=================== - -Set a Simple Bucket Policy -========================== +A bucket's policy can be set by calling the ``put_bucket_policy`` method. + +The policy is defined in the same JSON format as an IAM policy. The policy +defined in the example below enables any user to retrieve any object +stored in the bucket identified by the ``bucket_name`` variable. -The example below shows how to: - -* Set the bucket policy for a specified bucket using - `put_bucket_policy `_. - -Example -------- .. code-block:: python - import boto3 import json - # Create an S3 client - s3 = boto3.client('s3') - - bucket_name = 'my-bucket' - - # Create the bucket policy + # Create a bucket policy + bucket_name = 'BUCKET_NAME' bucket_policy = { 'Version': '2012-10-17', 'Statement': [{ @@ -102,34 +58,25 @@ Example 'Effect': 'Allow', 'Principal': '*', 'Action': ['s3:GetObject'], - 'Resource': "arn:aws:s3:::%s/*" % bucket_name + 'Resource': f'arn:aws:s3:::{bucket_name}/*' }] } - # Convert the policy to a JSON string + # Convert the policy from JSON dict to string bucket_policy = json.dumps(bucket_policy) - # Set the new policy on the given bucket + # Set the new policy + s3 = boto3.client('s3') s3.put_bucket_policy(Bucket=bucket_name, Policy=bucket_policy) - + Delete a Bucket Policy ====================== -The example below shows how to: - -* Delete a bucket policy for a specified bucket using - `delete_bucket_policy `_. - -Example -------- +A bucket's policy can be deleted by calling the ``delete_bucket_policy`` method. .. code-block:: python - import boto3 - - # Create an S3 client + # Delete a bucket's policy s3 = boto3.client('s3') - - # Call S3 to delete the policy for the given bucket - s3.delete_bucket_policy(Bucket='my-bucket') + s3.delete_bucket_policy(Bucket='BUCKET_NAME') diff --git a/docs/source/guide/s3-example-configuring-buckets.rst b/docs/source/guide/s3-example-configuring-buckets.rst index 1bec4ee..d029829 100644 --- a/docs/source/guide/s3-example-configuring-buckets.rst +++ b/docs/source/guide/s3-example-configuring-buckets.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the @@ -7,73 +7,62 @@ This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. - -.. _aws-boto3-s3-configuring-buckets: -############################# -Configuring Amazon S3 Buckets -############################# -This Python example shows you how to configure the cross-origin resource sharing (CORS) permissions for a bucket. +######################### +Bucket CORS Configuration +######################### -The Scenario -============ +Cross Origin Resource Sharing (CORS) enables client web applications in one +domain to access resources in another domain. An S3 bucket can be configured +to enable cross-origin requests. The configuration defines rules that specify +the allowed origins, HTTP methods (GET, PUT, etc.), and other elements. -In this example, Python code is used to list your Amazon S3 buckets and to configure CORS and bucket logging. -The Python code uses the AWS SDK for Python to configure a selected Amazon S3 bucket using these -methods of the Amazon S3 client class: -* `get_bucket_cors `_ +Retrieve a Bucket CORS Configuration +==================================== -* `put_bucket_cors `_. +Retrieve a bucket's CORS configuration by calling the AWS SDK for Python +``get_bucket_cors`` method. -For more information about using CORS configuration with an Amazon S3 bucket, see -`Cross-Origin Resource Sharing (CORS) `_ -in the *Amazon Simple Storage Service Developer Guide*. - -All the example code for the Amazon Web Services (AWS) SDK for Python is available `here on GitHub `_. - -Prerequisite Tasks -================== - -To set up and run this example, you must first complete this task: - -* Configure your AWS credentials, as described in :doc:`quickstart`. - -Get a Bucket CORS Configuration -=============================== - -The example below shows how to: - -* Get a CORS configuration for a specified bucket using - `get_bucket_cors `_. - .. code-block:: python + import logging import boto3 + from botocore.exceptions import ClientError - # Create an S3 client - s3 = boto3.client('s3') - # Call S3 to get CORS configuration for selected bucket - result = s3.get_bucket_cors(Bucket='my-bucket') + def get_bucket_cors(bucket_name): + """Retrieve the CORS configuration rules of an Amazon S3 bucket + + :param bucket_name: string + :return: List of the bucket's CORS configuration rules. If no CORS + configuration exists, return empty list. If error, return None. + """ + + # Retrieve the CORS configuration + s3 = boto3.client('s3') + try: + response = s3.get_bucket_cors(Bucket=bucket_name) + except ClientError as e: + if e.response['Error']['Code'] == 'NoSuchCORSConfiguration': + return [] + else: + # AllAccessDisabled error == bucket not found + logging.error(e) + return None + return response['CORSRules'] + Set a Bucket CORS Configuration =============================== -The example below shows how to: - -* Set a CORS configuration for a specified bucket using - `put_bucket_cors `_. - +A bucket's CORS configuration can be set by calling the ``put_bucket_cors`` +method. + .. code-block:: python - import boto3 - - # Create an S3 client - s3 = boto3.client('s3') - - # Create the CORS configuration + # Define the configuration rules cors_configuration = { 'CORSRules': [{ 'AllowedHeaders': ['Authorization'], @@ -84,6 +73,7 @@ The example below shows how to: }] } - # Set the new CORS configuration on the selected bucket - s3.put_bucket_cors(Bucket='my-bucket', CORSConfiguration=cors_configuration) - + # Set the CORS configuration + s3 = boto3.client('s3') + s3.put_bucket_cors(Bucket='BUCKET_NAME', + CORSConfiguration=cors_configuration) diff --git a/docs/source/guide/s3-example-creating-buckets.rst b/docs/source/guide/s3-example-creating-buckets.rst index 4934dd9..5dea7cf 100644 --- a/docs/source/guide/s3-example-creating-buckets.rst +++ b/docs/source/guide/s3-example-creating-buckets.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the @@ -7,117 +7,73 @@ This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. - -.. _aws-boto3-s3-creating-buckets: -#################################### -Creating and Using Amazon S3 Buckets -#################################### -This Python example shows you how to: +################# +Amazon S3 Buckets +################# -* Obtain and display a list of Amazon S3 buckets in your account. +An Amazon S3 bucket is a storage location to hold files. S3 files are referred +to as objects. -* Create an Amazon S3 bucket. +This section describes how to use the AWS SDK for Python to perform common +operations on S3 buckets. -* Upload an object to a specified bucket. - -The Scenario -============ - -In this example, Python code is used to obtain a list of existing Amazon S3 buckets, create a bucket, -and upload a file to a specified bucket. The code uses the AWS SDK for Python to get information from -and upload files to an Amazon S3 bucket using these methods of the Amazon S3 client class: - -* `list_buckets `_ - -* `create_bucket `_ - -* `upload_file `_ - -All the example code for the Amazon Web Services (AWS) SDK for Python is available `here on GitHub `_. - -Prerequisite Tasks -================== - -To set up and run this example, you must first complete this task: - -* Configure your AWS credentials, as described in :doc:`quickstart`. - -Display a List of Amazon S3 Buckets -=================================== - -List all the buckets owned by the authenticated sender of the request. - -The example below shows how to: - -* List buckets using - `list_buckets `_. - - -Example -------- - -.. code-block:: python - - import boto3 - - # Create an S3 client - s3 = boto3.client('s3') - - # Call S3 to list current buckets - response = s3.list_buckets() - - # Get a list of all bucket names from the response - buckets = [bucket['Name'] for bucket in response['Buckets']] - - # Print out the bucket list - print("Bucket List: %s" % buckets) - Create an Amazon S3 Bucket ========================== -The example below shows how to: - -* Create a new bucket using - `create_bucket `_. - - -Example -------- +The name of an Amazon S3 bucket must be unique across all regions of the AWS +platform. The bucket can be located in a specific region to minimize latency +or to address regulatory requirements. .. code-block:: python + import logging import boto3 + from botocore.exceptions import ClientError - s3 = boto3.client('s3') - s3.create_bucket(Bucket='my-bucket') - -Upload a File to an Amazon S3 Bucket -==================================== + def create_bucket(bucket_name, region=None): + """Create an S3 bucket in a specified region -The example below shows how to: - -* Upload a file to a bucket using - `upload_file `_. - + If a region is not specified, the bucket is created in the S3 default + region (us-east-1). -Example -------- + :param bucket_name: Bucket to create + :param region: String region to create bucket in, e.g., 'us-west-2' + :return: True if bucket created, else False + """ + + # Create bucket + try: + if region is None: + s3_client = boto3.client('s3') + s3_client.create_bucket(Bucket=bucket_name) + else: + s3_client = boto3.client('s3', region_name=region) + location = {'LocationConstraint': region} + s3_client.create_bucket(Bucket=bucket_name, + CreateBucketConfiguration=location) + except ClientError as e: + logging.error(e) + return False + return True + + +List Existing Buckets +===================== + +List all the existing buckets for the AWS account. .. code-block:: python - import boto3 - - # Create an S3 client + # Retrieve the list of existing buckets s3 = boto3.client('s3') + response = s3.list_buckets() - filename = 'file.txt' - bucket_name = 'my-bucket' + # Output the bucket names + print('Existing buckets:') + for bucket in response['Buckets']: + print(f' {bucket["Name"]}') - # Uploads the given file using a managed uploader, which will split up large - # files automatically and upload parts in parallel. - s3.upload_file(filename, bucket_name, filename) - \ No newline at end of file diff --git a/docs/source/guide/s3-example-download-file.rst b/docs/source/guide/s3-example-download-file.rst index 0b3b988..75511e9 100644 --- a/docs/source/guide/s3-example-download-file.rst +++ b/docs/source/guide/s3-example-download-file.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the @@ -8,52 +8,48 @@ either express or implied. See the License for the specific language governing permissions and limitations under the License. -.. _aws-boto3-s3-download-file: -#################################### -Downloading a File from an S3 Bucket -#################################### +################# +Downloading Files +################# -.. meta:: - :description: Use the AWS SDK for Python (aka Boto) to download a file from an S3 bucket. - :keywords: download file, s3, bucket +The methods provided by the AWS SDK for Python to download files are similar +to those provided to upload files. -This example shows how to download a file from an S3 bucket, using :py:meth:`S3.Bucket.download_file`. - -Prerequisites -============= - -To set up and run this example, you must first: - -* Configure your AWS credentials, as described in :doc:`quickstart`. -* Create an S3 bucket and upload a file to the bucket. -* Replace the ``BUCKET_NAME`` and ``KEY`` values in the code snippet with the name of your bucket and the key for the uploaded file. - -Downloading a File -================== - -The example below tries to download an S3 object to a file. If the service returns a 404 error, it prints an error message indicating that the object doesn't exist. +The ``download_file`` method accepts the names of the bucket and object to +download and the filename to save the file to. .. code-block:: python import boto3 - import botocore - BUCKET_NAME = 'my-bucket' # replace with your bucket name - KEY = 'my_image_in_s3.jpg' # replace with your object key + s3 = boto3.client('s3') + s3.download_file('BUCKET_NAME', 'OBJECT_NAME', 'FILE_NAME') - s3 = boto3.resource('s3') - try: - s3.Bucket(BUCKET_NAME).download_file(KEY, 'my_local_image.jpg') - except botocore.exceptions.ClientError as e: - if e.response['Error']['Code'] == "404": - print("The object does not exist.") - else: - raise +The ``download_fileobj`` method accepts a writeable file-like object. The file +object must be opened in binary mode, not text mode. + +.. code-block:: python + + s3 = boto3.client('s3') + with open('FILE_NAME', 'wb') as f: + s3.download_fileobj('BUCKET_NAME', 'OBJECT_NAME', f) + + +Like their upload cousins, the download methods are provided by the +S3 ``Client``, ``Bucket``, and ``Object`` classes, and each class provides +identical functionality. Use whichever class is convenient. + +Also like the upload methods, the download methods support the optional +``ExtraArgs`` and ``Callback`` parameters. + +The list of valid ``ExtraArgs`` settings for the download methods is +specified in the ``ALLOWED_DOWNLOAD_ARGS`` attribute of the ``S3Transfer`` +object at :py:attr:`boto3.s3.transfer.S3Transfer.ALLOWED_DOWNLOAD_ARGS`. + +The download method's ``Callback`` parameter is used for the same purpose +as the upload method's. The upload and download methods can both invoke the +same ``Callback`` class. -More Info -========= -* :py:meth:`S3.Bucket.download_file` -* :ref:`s3_guide` diff --git a/docs/source/guide/s3-example-static-web-host.rst b/docs/source/guide/s3-example-static-web-host.rst index eb15162..3b06ea1 100644 --- a/docs/source/guide/s3-example-static-web-host.rst +++ b/docs/source/guide/s3-example-static-web-host.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the @@ -7,110 +7,59 @@ This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. - -.. _aws-boto3-s3-static-web-host: + ############################################## Using an Amazon S3 Bucket as a Static Web Host ############################################## -This Python example shows you how to set up an Amazon S3 bucket as a static web host. -The Scenario +An S3 bucket can be configured to host a static website. -In this example, Python code is used to configure any of your buckets to act as a static web host. -The code uses the AWS SDK for Python to configure a selected Amazon S3 bucket using these methods -of the Amazon S3 client class: -* `get_bucket_website `_ +Retrieve a Website Configuration +================================ -* `put_bucket_website `_ - -* `delete_bucket_website `_ - -For more information about using an Amazon S3 bucket as a static web host, see -`Hosting a Static Website on Amazon S3 `_ -in the *Amazon Simple Storage Service Developer Guide*. - -All the example code for the Amazon Web Services (AWS) SDK for Python is available `here on GitHub `_. - -Prerequisite Tasks -================== - -To set up and run this example, you must first complete this task: - -* Configure your AWS credentials, as described in :doc:`quickstart`. - -Get the Current Bucket Website Configuration -============================================= - -The example below shows how to: - -* Get the bucket website configuration using - `get_bucket_website `_. - -Example -------- +Retrieve a bucket's website configuration by calling the AWS SDK for Python +``get_bucket_website`` method. .. code-block:: python import boto3 - # Create an S3 client + # Retrieve the website configuration s3 = boto3.client('s3') + result = s3.get_bucket_website(Bucket='BUCKET_NAME') + - # Call to S3 to retrieve the policy for the given bucket - result = s3.get_bucket_website(Bucket='my-bucket') - -Set a Bucket Website Configuration -================================== +Set a Website Configuration +=========================== + +A bucket's website configuration can be set by calling the +``put_bucket_website`` method. -The example below shows how to: - -* Set a bucket website configuration using - `put_bucket_website `_. - -Example -------- .. code-block:: python - import boto3 - - # Create an S3 client - s3 = boto3.client('s3') - - # Create the configuration for the website + # Define the website configuration website_configuration = { 'ErrorDocument': {'Key': 'error.html'}, 'IndexDocument': {'Suffix': 'index.html'}, } - # Set the new policy on the selected bucket - s3.put_bucket_website( - Bucket='my-bucket', - WebsiteConfiguration=website_configuration - ) + # Set the website configuration + s3 = boto3.client('s3') + s3.put_bucket_website(Bucket='BUCKET_NAME', + WebsiteConfiguration=website_configuration) - -Delete a Bucket Website Configuration -===================================== -The example below shows how to: - -* Delete a bucket website configuration using - `delete_bucket_website `_. - -Example -------- +Delete a Website Configuration +============================== + +A bucket's website configuration can be deleted by calling the +``delete_bucket_website`` method. .. code-block:: python - import boto3 - - # Create an S3 client + # Delete the website configuration s3 = boto3.client('s3') - - # Call S3 to delete the website policy for the given bucket - s3.delete_bucket_website(Bucket='my-bucket') - - \ No newline at end of file + s3.delete_bucket_website(Bucket='BUCKET_NAME') diff --git a/docs/source/guide/s3-examples.rst b/docs/source/guide/s3-examples.rst index 5ce9305..5671573 100644 --- a/docs/source/guide/s3-examples.rst +++ b/docs/source/guide/s3-examples.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the @@ -16,17 +16,13 @@ Amazon S3 Examples .. meta:: :description: - :keywords: AWS S3 code examples for Boto3 + :keywords: s3 python -Amazon Simple Storage Service (Amazon S3) is a web service that provides highly scalable cloud storage. -Amazon S3 provides easy to use object storage, with a simple web service interface to store and get -any amount of data from anywhere on the web. +Amazon Simple Storage Service (Amazon S3) is an object storage service that +offers scalability, data availability, security, and performance. -The Python API for Amazon S3 is exposed through the AWS.S3 client class. For more information about -Amazon S3, see the `Amazon S3 documentation `_. - -You can use the following examples to access Amazon Simple Storage Service (Amazon S3) using -AWS Python SDK. For more information about Amazon S3, see the `Amazon S3 documentation `_. +This section demonstrates how to use the AWS SDK for Python to access Amazon S3 +services. **Examples** @@ -34,8 +30,11 @@ AWS Python SDK. For more information about Amazon S3, see the `Amazon S3 docume :maxdepth: 1 s3-example-creating-buckets + s3-uploading-files s3-example-download-file - s3-example-configuring-buckets - s3-example-access-permissions + s3 + s3-presigned-urls s3-example-bucket-policies + s3-example-access-permissions s3-example-static-web-host + s3-example-configuring-buckets diff --git a/docs/source/guide/s3-presigned-urls.rst b/docs/source/guide/s3-presigned-urls.rst new file mode 100644 index 0000000..5acd93c --- /dev/null +++ b/docs/source/guide/s3-presigned-urls.rst @@ -0,0 +1,211 @@ +.. Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + + +############## +Presigned URLs +############## + +A user who does not have AWS credentials or permission to access an S3 object +can be granted temporary access by using a presigned URL. + +A presigned URL is generated by an AWS user who has access to the object. The +generated URL is then given to the unauthorized user. The presigned URL can be +entered in a browser or used by a program or HTML webpage. The credentials +used by the presigned URL are those of the AWS user who generated the URL. + +A presigned URL remains valid for a limited period of time which is specified +when the URL is generated. + +.. code-block:: python + + import logging + import boto3 + from botocore.exceptions import ClientError + + + def create_presigned_url(bucket_name, object_name, expiration=3600): + """Generate a presigned URL to share an S3 object + + :param bucket_name: string + :param object_name: string + :param expiration: Time in seconds for the presigned URL to remain valid + :return: Presigned URL as string. If error, returns None. + """ + + # Generate a presigned URL for the S3 object + s3_client = boto3.client('s3') + try: + response = s3_client.generate_presigned_url('get_object', + Params={'Bucket': bucket_name, + 'Key': object_name}, + ExpiresIn=expiration) + except ClientError as e: + logging.error(e) + return None + + # The response contains the presigned URL + return response + +The user can download the S3 object by entering the presigned URL in a browser. +A program or HTML page can download the S3 object by using the presigned URL +as part of an HTTP GET request. + +The following code demonstrates using the Python ``requests`` package to +perform a GET request. + +.. code-block:: python + + import requests # To install: pip install requests + + url = create_presigned_url('BUCKET_NAME', 'OBJECT_NAME') + if url is not None: + response = requests.get(url) + + +Using Presigned URLs to Perform Other S3 Operations +=================================================== + +The main purpose of presigned URLs is to grant a user temporary access to an +S3 object. However, presigned URLs can be used to grant permission to perform +additional operations on S3 buckets and objects. + +The ``create_presigned_url_expanded`` method shown below generates a presigned +URL to perform a specified S3 operation. The method accepts the name of the S3 +``Client`` method to perform, such as 'list_buckets' or 'get_bucket_location.' +The parameters to pass to the method are specified in the +``method_parameters`` dictionary argument. The HTTP method to use (GET, PUT, +etc.) can be specified, but the AWS SDK for Python will automatically select +the appropriate method so this argument is not normally required. + +.. code-block:: python + + import logging + import boto3 + from botocore.exceptions import ClientError + + + def create_presigned_url_expanded(client_method_name, method_parameters=None, + expiration=3600, http_method=None): + """Generate a presigned URL to invoke an S3.Client method + + Not all the client methods provided in the AWS Python SDK are supported. + + :param client_method_name: Name of the S3.Client method, e.g., 'list_buckets' + :param method_parameters: Dictionary of parameters to send to the method + :param expiration: Time in seconds for the presigned URL to remain valid + :param http_method: HTTP method to use (GET, etc.) + :return: Presigned URL as string. If error, returns None. + """ + + # Generate a presigned URL for the S3 client method + s3_client = boto3.client('s3') + try: + response = s3_client.generate_presigned_url(ClientMethod=client_method_name, + Params=method_parameters, + ExpiresIn=expiration, + HttpMethod=http_method) + except ClientError as e: + logging.error(e) + return None + + # The response contains the presigned URL + return response + + +Generating a Presigned URL to Upload a File +=========================================== + +A user who does not have AWS credentials to upload a file can use a +presigned URL to perform the upload. The upload operation makes an HTTP POST +request and requires additional parameters to be sent as part of the request. + +.. code-block:: python + + import logging + import boto3 + from botocore.exceptions import ClientError + + + def create_presigned_post(bucket_name, object_name, + fields=None, conditions=None, expiration=3600): + """Generate a presigned URL S3 POST request to upload a file + + :param bucket_name: string + :param object_name: string + :param fields: Dictionary of prefilled form fields + :param conditions: List of conditions to include in the policy + :param expiration: Time in seconds for the presigned URL to remain valid + :return: Dictionary with the following keys: + url: URL to post to + fields: Dictionary of form fields and values to submit with the POST + :return: None if error. + """ + + # Generate a presigned S3 POST URL + s3_client = boto3.client('s3') + try: + response = s3_client.generate_presigned_post(bucket_name, + object_name, + Fields=fields, + Conditions=conditions, + ExpiresIn=expiration) + except ClientError as e: + logging.error(e) + return None + + # The response contains the presigned URL and required fields + return response + +The generated presigned URL includes both a URL and additional fields that +must be passed as part of the subsequent HTTP POST request. + +The following code demonstrates how to use the ``requests`` package with a +presigned POST URL to perform a POST request to upload a file to S3. + +.. code-block:: python + + import requests # To install: pip install requests + + # Generate a presigned S3 POST URL + object_name = 'OBJECT_NAME' + response = create_presigned_post('BUCKET_NAME', object_name) + if response is None: + exit(1) + + # Demonstrate how another Python program can use the presigned URL to upload a file + with open(object_name, 'rb') as f: + files = {'file': (object_name, f)} + http_response = requests.post(response['url'], data=response['fields'], files=files) + # If successful, returns HTTP status code 204 + logging.info(f'File upload HTTP status code: {http_response.status_code}') + +The presigned POST URL and fields values can also be used in an HTML page. + +.. code-block:: html + + + + + + + +
+ + + + + + File: +
+ +
+ + diff --git a/docs/source/guide/s3-uploading-files.rst b/docs/source/guide/s3-uploading-files.rst new file mode 100644 index 0000000..585070d --- /dev/null +++ b/docs/source/guide/s3-uploading-files.rst @@ -0,0 +1,161 @@ +.. Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. + + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. + + +############### +Uploading Files +############### + +The AWS SDK for Python provides a pair of methods to upload a file to an S3 +bucket. + +The ``upload_file`` method accepts a file name, a bucket name, and an object +name. The method handles large files by splitting them into smaller chunks +and uploading each chunk in parallel. + +.. code-block:: python + + import logging + import boto3 + from botocore.exceptions import ClientError + + + def upload_file(file_name, bucket, object_name=None): + """Upload a file to an S3 bucket + + :param file_name: File to upload + :param bucket: Bucket to upload to + :param object_name: S3 object name. If not specified then file_name is used + :return: True if file was uploaded, else False + """ + + # If S3 object_name was not specified, use file_name + if object_name is None: + object_name = file_name + + # Upload the file + s3_client = boto3.client('s3') + try: + response = s3_client.upload_file(file_name, bucket, object_name) + except ClientError as e: + logging.error(e) + return False + return True + + +The ``upload_fileobj`` method accepts a readable file-like object. The file +object must be opened in binary mode, not text mode. + +.. code-block:: python + + s3 = boto3.client('s3') + with open("FILE_NAME", "rb") as f: + s3.upload_fileobj(f, "BUCKET_NAME", "OBJECT_NAME") + + +The ``upload_file`` and ``upload_fileobj`` methods are provided by the S3 +``Client``, ``Bucket``, and ``Object`` classes. The method functionality +provided by each class is identical. No benefits are gained by calling one +class's method over another's. Use whichever class is most convenient. + + +The ExtraArgs Parameter +=========================== + +Both ``upload_file`` and ``upload_fileobj`` accept an optional ``ExtraArgs`` +parameter that can be used for various purposes. The list of valid +``ExtraArgs`` settings is specified in the ``ALLOWED_UPLOAD_ARGS`` attribute +of the ``S3Transfer`` object +at :py:attr:`boto3.s3.transfer.S3Transfer.ALLOWED_UPLOAD_ARGS`. + +The following ``ExtraArgs`` setting specifies metadata to attach to the S3 +object. + +.. code-block:: python + + s3.upload_file( + 'FILE_NAME', 'BUCKET_NAME', 'OBJECT_NAME', + ExtraArgs={'Metadata': {'mykey': 'myvalue'}} + ) + + +The following ``ExtraArgs`` setting assigns the canned ACL (access control +list) value 'public-read' to the S3 object. + +.. code-block:: python + + s3.upload_file( + 'FILE_NAME', 'BUCKET_NAME', 'OBJECT_NAME', + ExtraArgs={'ACL': 'public-read'} + ) + + +The ``ExtraArgs`` parameter can also be used to set custom or multiple ACLs. + +.. code-block:: python + + s3.upload_file( + 'FILE_NAME', 'BUCKET_NAME', 'OBJECT_NAME', + ExtraArgs={ + 'GrantRead': 'uri="http://acs.amazonaws.com/groups/global/AllUsers"', + 'GrantFullControl': 'id="01234567890abcdefg"', + } + ) + + +The Callback Parameter +========================== + +Both ``upload_file`` and ``upload_fileobj`` accept an optional ``Callback`` +parameter. The parameter references a class that the Python SDK invokes +intermittently during the transfer operation. + +Invoking a Python class executes the class's ``__call__`` method. For each +invocation, the class is passed the number of bytes transferred up +to that point. This information can be used to implement a progress monitor. + +The following ``Callback`` setting instructs the Python SDK to create an +instance of the ``ProgressPercentage`` class. During the upload, the +instance's ``__call__`` method will be invoked intermittently. + +.. code-block:: python + + s3.upload_file( + 'FILE_NAME', 'BUCKET_NAME', 'OBJECT_NAME', + Callback=ProgressPercentage('FILE_NAME') + ) + + +An example implementation of the ``ProcessPercentage`` class is shown below. + +.. code-block:: python + + import os + import sys + import threading + + class ProgressPercentage(object): + + def __init__(self, filename): + self._filename = filename + self._size = float(os.path.getsize(filename)) + self._seen_so_far = 0 + self._lock = threading.Lock() + + def __call__(self, bytes_amount): + # To simplify, assume this is hooked up to a single filename + with self._lock: + self._seen_so_far += bytes_amount + percentage = (self._seen_so_far / self._size) * 100 + sys.stdout.write( + "\r%s %s / %s (%.2f%%)" % ( + self._filename, self._seen_so_far, self._size, + percentage)) + sys.stdout.flush() diff --git a/docs/source/guide/s3.rst b/docs/source/guide/s3.rst index f19592d..27ca7e0 100644 --- a/docs/source/guide/s3.rst +++ b/docs/source/guide/s3.rst @@ -1,579 +1,91 @@ -.. _s3_guide: +.. Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. -S3 -== + This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 + International License (the "License"). You may not use this file except in compliance with the + License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. -By following this guide, you will learn how to use features of S3 client that -are unique to the SDK, specifically the generation and use of pre-signed URLs, -pre-signed POSTs, and the use of the transfer manager. You will also learn how -to use a few common, but important, settings specific to S3. + This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific language governing permissions and + limitations under the License. -Changing the Addressing Style ------------------------------ +########################### +File Transfer Configuration +########################### -S3 supports two different ways to address a bucket, Virtual Host Style and Path -Style. This guide won't cover all the details of `virtual host addressing`_, but -you can read up on that in S3's docs. In general, the SDK will handle the -decision of what style to use for you, but there are some cases where you may -want to set it yourself. For instance, if you have a CORS configured bucket -that is only a few hours old, you may need to use path style addressing for -generating pre-signed POSTs and URLs until the necessary DNS changes have time -to propagate. +When uploading, downloading, or copying a file or S3 object, the AWS SDK for +Python automatically manages retries and multipart and non-multipart transfers. -Note: if you set the addressing style to path style, you HAVE to set the correct -region. +The management operations are performed by using reasonable default settings +that are well-suited for most scenarios. To handle a special case, the default +settings can be configured to meet requirements. -The preferred way to set the addressing style is to use the ``addressing_style`` -config parameter when you create your client or resource.:: +Configuration settings are stored in a +:py:class:`boto3.s3.transfer.TransferConfig` object. The object is passed to +a transfer method (``upload_file``, ``download_file``, etc.) in the ``Config=`` +parameter. - import boto3 - from botocore.client import Config +The remaining sections demonstrate how to configure various transfer operations +with the ``TransferConfig`` object. - # Other valid options here are 'auto' (default) and 'virtual' - s3 = boto3.client('s3', 'us-west-2', config=Config(s3={'addressing_style': 'path'})) +Multipart Transfers +=================== -Using the Transfer Manager --------------------------- +Multipart transfers occur when the file size exceeds the value of the +``multipart_threshold`` attribute. -``boto3`` provides interfaces for managing various types of transfers with -S3. Functionality includes: +The following example configures an ``upload_file`` transfer to be multipart +if the file size is larger than the threshold specified in the +``TransferConfig`` object. -* Automatically managing multipart and non-multipart uploads -* Automatically managing multipart and non-multipart downloads -* Automatically managing multipart and non-multipart copies -* Uploading from: - - * a file name - * a readable file-like object - -* Downloading to: - - * a file name - * a writeable file-like object - -* Tracking progress of individual transfers -* Managing retries of transfers -* Configuring various transfer settings such as: - - * Max request concurrency - * Multipart transfer thresholds - * Multipart transfer part sizes - * Number of download retry attempts - * Enabling/disabling the use of threads - - -Uploads -~~~~~~~ -The managed upload methods are exposed in both the client and resource -interfaces of ``boto3``: - -* :py:class:`S3.Client` method to upload a file by name: :py:meth:`S3.Client.upload_file` -* :py:class:`S3.Client` method to upload a readable file-like object: :py:meth:`S3.Client.upload_fileobj` -* :py:class:`S3.Bucket` method to upload a file by name: :py:meth:`S3.Bucket.upload_file` -* :py:class:`S3.Bucket` method to upload a readable file-like object: :py:meth:`S3.Bucket.upload_fileobj` -* :py:class:`S3.Object` method to upload a file by name: :py:meth:`S3.Object.upload_file` -* :py:class:`S3.Object` method to upload a readable file-like object: :py:meth:`S3.Object.upload_fileobj` - -.. note:: - - Even though there is an ``upload_file`` and ``upload_fileobj`` method for - a variety of classes, they all share the exact same functionality. - Other than for convenience, there are no benefits from using one method from - one class over using the same method for a different class. - - -To upload a file by name, use one of the ``upload_file`` methods:: - - import boto3 - - # Get the service client - s3 = boto3.client('s3') - - # Upload tmp.txt to bucket-name at key-name - s3.upload_file("tmp.txt", "bucket-name", "key-name") - - -To upload a readable file-like object, use one of the ``upload_fileobj`` -methods. Note that this file-like object **must** produce binary when read -from, **not** text:: - - import boto3 - - # Get the service client - s3 = boto3.client('s3') - - # Upload a file-like object to bucket-name at key-name - with open("tmp.txt", "rb") as f: - s3.upload_fileobj(f, "bucket-name", "key-name") - - -When uploading, ``ExtraArgs`` can be used to specify a variety of -additional parameters. For example, to supply user metadata:: - - s3.upload_file( - "tmp.txt", "bucket-name", "key-name", - ExtraArgs={"Metadata": {"mykey": "myvalue"}} - ) - - -To set a canned ACL:: - - s3.upload_file( - 'tmp.txt', 'bucket-name', 'key-name', - ExtraArgs={'ACL': 'public-read'} - ) - - -To set custom or multiple ACLs:: - - s3.upload_file( - 'tmp.txt', 'bucket-name', 'key-name', - ExtraArgs={ - 'GrantRead': 'uri="http://acs.amazonaws.com/groups/global/AllUsers"', - 'GrantFullControl': 'id="79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be"', - } - ) - - -All valid ``ExtraArgs`` are listed at :py:attr:`boto3.s3.transfer.S3Transfer.ALLOWED_UPLOAD_ARGS` - -To track the progress of a transfer, a progress callback can be provided such -that the callback gets invoked each time progress is made on the transfer:: - - import os - import sys - import threading - - import boto3 - - class ProgressPercentage(object): - def __init__(self, filename): - self._filename = filename - self._size = float(os.path.getsize(filename)) - self._seen_so_far = 0 - self._lock = threading.Lock() - def __call__(self, bytes_amount): - # To simplify we'll assume this is hooked up - # to a single filename. - with self._lock: - self._seen_so_far += bytes_amount - percentage = (self._seen_so_far / self._size) * 100 - sys.stdout.write( - "\r%s %s / %s (%.2f%%)" % ( - self._filename, self._seen_so_far, self._size, - percentage)) - sys.stdout.flush() - - - # Get the service client - s3 = boto3.client('s3') - - # Upload tmp.txt to bucket-name at key-name - s3.upload_file( - "tmp.txt", "bucket-name", "key-name", - Callback=ProgressPercentage("tmp.txt")) - - -Downloads -~~~~~~~~~ -The managed download methods are exposed in both the client and resource -interfaces of ``boto3``: - -* :py:class:`S3.Client` method to download an object to a file by name: :py:meth:`S3.Client.download_file` -* :py:class:`S3.Client` method to download an object to a writeable file-like object: :py:meth:`S3.Client.download_fileobj` -* :py:class:`S3.Bucket` method to download an object to a file by name: :py:meth:`S3.Bucket.download_file` -* :py:class:`S3.Bucket` method to download an object to a writeable file-like object: :py:meth:`S3.Bucket.download_fileobj` -* :py:class:`S3.Object` method to download an object to a file by name: :py:meth:`S3.Object.download_file` -* :py:class:`S3.Object` method to download an object to a writeable file-like object: :py:meth:`S3.Object.download_fileobj` - -.. note:: - - Even though there is a ``download_file`` and ``download_fileobj`` method for - a variety of classes, they all share the exact same functionality. - Other than for convenience, there are no benefits from using one method from - one class over using the same method for a different class. - - -To download to a file by name, use one of the ``download_file`` -methods:: - - import boto3 - - # Get the service client - s3 = boto3.client('s3') - - # Download object at bucket-name with key-name to tmp.txt - s3.download_file("bucket-name", "key-name", "tmp.txt") - - -To download to a writeable file-like object, use one of the -``download_fileobj`` methods. Note that this file-like object **must** -allow binary to be written to it, **not** just text:: - - import boto3 - - # Get the service client - s3 = boto3.client('s3') - - # Download object at bucket-name with key-name to file-like object - with open("tmp.txt", "wb") as f: - s3.download_fileobj("bucket-name", "key-name", f) - - -To download using any extra parameters such as version ids, use the -``ExtraArgs`` parameter:: - - - import boto3 - - # Get the service client - s3 = boto3.client('s3') - - # Download object at bucket-name with key-name to tmp.txt - s3.download_file( - "bucket-name", "key-name", "tmp.txt", - ExtraArgs={"VersionId": "my-version-id"} - ) - - -All valid ``ExtraArgs`` are listed at :py:attr:`boto3.s3.transfer.S3Transfer.ALLOWED_DOWNLOAD_ARGS` - -To track the progress of a transfer, a progress callback can be provided such -that the callback gets invoked each time progress is made on the transfer:: - - import sys - import threading - - import boto3 - - class ProgressPercentage(object): - def __init__(self, filename): - self._filename = filename - self._seen_so_far = 0 - self._lock = threading.Lock() - def __call__(self, bytes_amount): - # To simplify we'll assume this is hooked up - # to a single filename. - with self._lock: - self._seen_so_far += bytes_amount - sys.stdout.write( - "\r%s --> %s bytes transferred" % ( - self._filename, self._seen_so_far)) - sys.stdout.flush() - - # Get the service client - s3 = boto3.client('s3') - - # Download object at bucket-name with key-name to tmp.txt - s3.download_file( - "bucket-name", "key-name", "tmp.txt", - Callback=ProgressPercentage("tmp.txt")) - - -Copies -~~~~~~ -The managed copy methods are exposed in both the client and resource -interfaces of ``boto3``: - -* :py:class:`S3.Client` method to copy an s3 object: :py:meth:`S3.Client.copy` -* :py:class:`S3.Bucket` method to copy an s3 object: :py:meth:`S3.Client.copy` -* :py:class:`S3.Object` method to copy an s3 object: :py:meth:`S3.Object.copy` - - -.. note:: - - Even though there is a ``copy`` method for a variety of classes, - they all share the exact same functionality. - Other than for convenience, there are no benefits from using one method from - one class over using the same method for a different class. - - -To do a managed copy, use one of the ``copy`` methods:: - - import boto3 - - # Get the service client - s3 = boto3.client('s3') - - # Copies object located in mybucket at mykey - # to the location otherbucket at otherkey - copy_source = { - 'Bucket': 'mybucket', - 'Key': 'mykey' - } - s3.copy(copy_source, 'otherbucket', 'otherkey') - - -To do a managed copy where the region of the source bucket is different than -the region of the final bucket, provide a ``SourceClient`` that shares the -same region as the source bucket:: - - import boto3 - - # Get a service client for us-west-2 region - s3 = boto3.client('s3', 'us-west-2') - # Get a service client for the eu-central-1 region - source_client = boto3.client('s3', 'eu-central-1') - - # Copies object located in mybucket at mykey in eu-central-1 region - # to the location otherbucket at otherkey in the us-west-2 region - copy_source = { - 'Bucket': 'mybucket', - 'Key': 'mykey' - } - s3.copy(copy_source, 'otherbucket', 'otherkey', SourceClient=source_client) - - - -To copy using any extra parameters such as replacing user metadata on an -existing object, use the ``ExtraArgs`` parameter:: - - - import boto3 - - # Get the service client - s3 = boto3.client('s3') - - # Copies object located in mybucket at mykey - # to the location otherbucket at otherkey - copy_source = { - 'Bucket': 'mybucket', - 'Key': 'mykey' - } - s3.copy( - copy_source, 'bucket', 'mykey', - ExtraArgs={ - "Metadata": { - "my-new-key": "my-new-value" - }, - "MetadataDirective": "REPLACE" - } - ) - - -To track the progress of a transfer, a progress callback can be provided such -that the callback gets invoked each time progress is made on the transfer:: - - import sys - import threading - - import boto3 - - class ProgressPercentage(object): - def __init__(self, filename): - self._filename = filename - self._seen_so_far = 0 - self._lock = threading.Lock() - def __call__(self, bytes_amount): - # To simplify we'll assume this is hooked up - # to a single filename. - with self._lock: - self._seen_so_far += bytes_amount - sys.stdout.write( - "\r%s --> %s bytes transferred" % ( - self._filename, self._seen_so_far)) - sys.stdout.flush() - - # Get the service client - s3 = boto3.client('s3') - - # Copies object located in mybucket at mykey - # to the location otherbucket at otherkey - copy_source = { - 'Bucket': 'mybucket', - 'Key': 'mykey' - } - s3.copy(copy_source, 'otherbucket', 'otherkey', - Callback=ProgressPercentage("otherbucket/otherkey")) - - -Note that the granularity of these callbacks will be much larger than the -upload and download methods because copies are all done server side and so -there is no local file to track the streaming of data. - - -Configuration Settings -~~~~~~~~~~~~~~~~~~~~~~ - -To configure the various managed transfer methods, a -:py:class:`boto3.s3.transfer.TransferConfig` object can be provided to -the ``Config`` parameter. Please note that the default configuration should -be well-suited for most scenarios and a ``Config`` should only be provided -for specific use cases. Here are some common use cases for configuring the -managed s3 transfer methods: - -To ensure that multipart uploads only happen when absolutely necessary, you -can use the ``multipart_threshold`` configuration parameter:: +.. code-block:: python import boto3 from boto3.s3.transfer import TransferConfig - # Get the service client - s3 = boto3.client('s3') - + # Set the desired multipart threshold value (5GB) GB = 1024 ** 3 - # Ensure that multipart uploads only happen if the size of a transfer - # is larger than S3's size limit for nonmultipart uploads, which is 5 GB. - config = TransferConfig(multipart_threshold=5 * GB) + config = TransferConfig(multipart_threshold=5*GB) - # Upload tmp.txt to bucket-name at key-name - s3.upload_file("tmp.txt", "bucket-name", "key-name", Config=config) - - -Sometimes depending on your connection speed, it is desired to limit or -increase potential bandwidth usage. Setting the ``max_concurrency`` can help -tune the potential bandwidth usage by decreasing or increasing the maximum -amount of concurrent S3 transfer-related API requests:: - - import boto3 - from boto3.s3.transfer import TransferConfig - - # Get the service client + # Perform the transfer s3 = boto3.client('s3') + s3.upload_file('FILE_NAME', 'BUCKET_NAME', 'OBJECT_NAME', Config=config) - # Decrease the max concurrency from 10 to 5 to potentially consume - # less downstream bandwidth. + +Concurrent Transfer Operations +============================== + +The maximum number of concurrent S3 API transfer operations can be tuned to +adjust for the connection speed. Set the ``max_concurrency`` attribute to +increase or decrease bandwidth usage. + +The attribute's default setting is 10. To reduce bandwidth usage, reduce the +value; to increase usage, increase it. + +.. code-block:: python + + # To consume less downstream bandwidth, decrease the maximum concurrency config = TransferConfig(max_concurrency=5) - # Download object at bucket-name with key-name to tmp.txt with the - # set configuration - s3.download_file("bucket-name", "key-name", "tmp.txt", Config=config) - - # Increase the max concurrency to 20 to potentially consume more - # downstream bandwidth. - config = TransferConfig(max_concurrency=20) - - # Download object at bucket-name with key-name to tmp.txt with the - # set configuration - s3.download_file("bucket-name", "key-name", "tmp.txt", Config=config) - - -Threads are used by default in the managed transfer methods. To ensure no -threads are used in the transfer process, set ``use_threads`` to -``False``. Note that in setting ``use_threads`` to ``False``, the value for -``max_concurrency`` is ignored as the main thread will only ever be used:: - - - import boto3 - from boto3.s3.transfer import TransferConfig - - # Get the service client + # Download an S3 object s3 = boto3.client('s3') + s3.download_file('BUCKET_NAME', 'OBJECT_NAME', 'FILE_NAME', Config=config) - # Ensure that no threads are used. + +Threads +======= + +Transfer operations use threads to implement concurrency. Thread use can be +disabled by setting the ``use_threads`` attribute to ``False.`` + +If thread use is disabled, transfer concurrency does not occur. Accordingly, +the value of the ``max_concurrency`` attribute is ignored. + +.. code-block:: python + + # Disable thread use/transfer concurrency config = TransferConfig(use_threads=False) - # Download object at bucket-name with key-name to tmp.txt with the - # set configuration - s3.download_file("bucket-name", "key-name", "tmp.txt", Config=config) - - -Generating Presigned URLs -------------------------- - -Pre-signed URLs allow you to give your users access to a specific object in your -bucket without requiring them to have AWS security credentials or permissions. -To generate a pre-signed URL, use the -:py:meth:`S3.Client.generate_presigned_url` method:: - - import boto3 - import requests - - # Get the service client. s3 = boto3.client('s3') - - # Generate the URL to get 'key-name' from 'bucket-name' - url = s3.generate_presigned_url( - ClientMethod='get_object', - Params={ - 'Bucket': 'bucket-name', - 'Key': 'key-name' - } - ) - - # Use the URL to perform the GET operation. You can use any method you like - # to send the GET, but we will use requests here to keep things simple. - response = requests.get(url) - -If your bucket requires the use of signature version 4, you can elect to use it -to sign your URL. This does not fundamentally change how you use generator, -you only need to make sure that the client used has signature version 4 -configured.:: - - import boto3 - from botocore.client import Config - - # Get the service client with sigv4 configured - s3 = boto3.client('s3', config=Config(signature_version='s3v4')) - - # Generate the URL to get 'key-name' from 'bucket-name' - url = s3.generate_presigned_url( - ClientMethod='get_object', - Params={ - 'Bucket': 'bucket-name', - 'Key': 'key-name' - } - ) - -Note: if your bucket is new and you require CORS, it is advised that -you use path style addressing (which is set by default in signature version 4). - - -Generating Presigned POSTs --------------------------- - -Much like pre-signed URLs, pre-signed POSTs allow you to give write access to a -user without giving them AWS credentials. The information you need to make the -POST is returned by the :py:meth:`S3.Client.generate_presigned_post` method:: - - import boto3 - import requests - - # Get the service client - s3 = boto3.client('s3') - - # Generate the POST attributes - post = s3.generate_presigned_post( - Bucket='bucket-name', - Key='key-name' - ) - - # Use the returned values to POST an object. Note that you need to use ALL - # of the returned fields in your post. You can use any method you like to - # send the POST, but we will use requests here to keep things simple. - files = {"file": "file_content"} - response = requests.post(post["url"], data=post["fields"], files=files) - -When generating these POSTs, you may wish to auto fill certain fields or -constrain what your users submit. You can do this by providing those fields and -conditions when you generate the POST data.:: - - import boto3 - - # Get the service client - s3 = boto3.client('s3') - - # Make sure everything posted is publicly readable - fields = {"acl": "public-read"} - - # Ensure that the ACL isn't changed and restrict the user to a length - # between 10 and 100. - conditions = [ - {"acl": "public-read"}, - ["content-length-range", 10, 100] - ] - - # Generate the POST attributes - post = s3.generate_presigned_post( - Bucket='bucket-name', - Key='key-name', - Fields=fields, - Conditions=conditions - ) - -Note: if your bucket is new and you require CORS, it is advised that -you use path style addressing (which is set by default in signature version 4). - -.. _virtual host addressing: http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html + s3.download_file('BUCKET_NAME', 'OBJECT_NAME', 'FILE_NAME', Config=config) diff --git a/docs/source/guide/ses-example-verify.rst b/docs/source/guide/ses-example-verify.rst deleted file mode 100644 index 7891e8e..0000000 --- a/docs/source/guide/ses-example-verify.rst +++ /dev/null @@ -1,128 +0,0 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - - This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 - International License (the "License"). You may not use this file except in compliance with the - License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/. - - This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, - either express or implied. See the License for the specific language governing permissions and - limitations under the License. - -.. _aws-boto3-ses-verify: - -############################################ -Verifying Email Identities in Amazon SES -############################################ - -.. meta:: - :description: Use Amazon SES API to verify email addresses and domains. - :keywords: Amazon SES code examples for Python, approve emails recipients with Python - -When you first start using your Amazon Simple Email Service (SES) account, all senders and recipients must be verified in the same AWS Region that you -will be sending emails to. For more information about sending emails, see `Sending Email with Amazon SES `_. - -The following examples show how to: - -* Verify an email address using `VerifyEmailIdentity `_. -* Verify an email domain using `VerifyDomainIdentity `_. -* List all email addresses using `ListIdentities `_. -* List all email domains using `ListIdentities `_. -* Remove an email address using `DeleteIdentity `_. -* Remove an email domain using `DeleteIdentity `_. -All the example code for the Amazon Web Services (AWS) SDK for Python is available `here on GitHub `_. - -Prerequisite Tasks -================== - -To set up and run this example, you must first complete these tasks: - -* Configure your AWS credentials, as described in :doc:`quickstart`. - -Verifying Email addresses -========================= -SES can send email only from verified email addresses or domains. By verifying an email address, you demonstrate that you're the owner of that address and want to allow SES to send email from that address. - -When you run the following code example, SES sends an email to the address you specified. When you (or the recipient of the email) click the link in the email, the address is verified. - -To add an email address to your SES account, use the `VerifyEmailIdentity `_ operation. - - -Verify an Email Domain -====================== - -SES can send email only from verified email addresses or domains. By verifying a domain, you demonstrate that you're the owner of that domain. When you verify a domain, you allow SES to send email from any address on that domain. - -When you run the following code example, SES provides you with a verification token. You have to add the token to your domain's DNS configuration. For more information, see :SES-dg:`Verifying a Domain with Amazon SES `_ in the |SES-dg|. - -To add a sending domain to your SES account, use the `VerifyDomainIdentity `_ operation. - -List Email Addresses -==================== - -To retrieve a list of email addresses submitted in the current AWS Region, regardless of verification status, use the `ListIdentities `_ operation. - -List Email Domains -================== - -To retrieve a list of email domains submitted in the current AWS Region, regardless of verification status use the `ListIdentities `_ operation. - -Example -------- - -.. code-block:: python - - import boto3 - - # Create SES client - ses = boto3.client('ses') - - response = ses.delete_identity( - Identity = 'EMAIL_ADDRESS' - ) - - print(response) - - - -Delete an Email Address -======================= - -To delete a verified email address from the list of verified identities, use the `DeleteIdentity `_ operation. - -Example -------- - -.. code-block:: python - - import boto3 - - # Create SES client - ses = boto3.client('ses') - - response = ses.delete_identity( - Identity = 'EMAIL_ADDRESS' - ) - - print(response) - -Delete an Email Domain -====================== - -To delete a verified email domain from the list of verified identities, use the `DeleteIdentity `_ operation. - -Example -------- - -.. code-block:: python - - import boto3 - - # Create SES client - ses = boto3.client('ses') - - response = ses.delete_identity( - Identity = 'DOMAIN_NAME' - ) - - print(response) - diff --git a/docs/source/guide/ses-examples.rst b/docs/source/guide/ses-examples.rst index 5a5d81c..75720d4 100644 --- a/docs/source/guide/ses-examples.rst +++ b/docs/source/guide/ses-examples.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the @@ -10,17 +10,19 @@ .. _aws-boto3-ses-examples: + ################### Amazon SES Examples ################### .. meta:: - :description: Amazon SES code examples for the AWS SDK for Python Botocore 3. - :keywords: Amazon Simple Email Service code examples for Python Botocore 3, AWS Email, Amazon bulk email + :description: Amazon SES code examples for the AWS SDK for Python. + :keywords: SES Python -Amazon Simple Email Service (SES) is an email platform that provides an easy, cost-effective way for you to send and receive email using your own - -email addresses and domains. For more information about Amazon SES, see the `Amazon SES documentation `_. +Amazon Simple Email Service (SES) is an email platform that provides an easy, +cost-effective way for you to send and receive email using your own email +addresses and domains. For more information about Amazon SES, see the +`Amazon SES documentation `_. **Examples** diff --git a/docs/source/guide/ses-filters.rst b/docs/source/guide/ses-filters.rst index 440c79e..8f6562b 100644 --- a/docs/source/guide/ses-filters.rst +++ b/docs/source/guide/ses-filters.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the @@ -10,21 +10,31 @@ .. _aws-boto3-ses-filters: + ################################### Managing Email Filters with SES API ################################### .. meta:: :description: Use the Amazon SES API to manage email filters. - :keywords: Amazon SES code examples for Python, IP Address Email Filters with Python + :keywords: SES Python -In addition to sending emails, you can also receive email with Amazon Simple Email Service (SES). An IP address filter enables you to optionally specify whether to accept or reject mail that originates from an IP address or range of IP addresses. For more information, see `Managing IP Address Filters for Amazon SES Email Receiving `__. +In addition to sending emails, you can also receive email with Amazon Simple +Email Service (SES). An IP address filter enables you to optionally specify +whether to accept or reject mail that originates from an IP address or range +of IP addresses. For more information, see `Managing IP Address Filters for +Amazon SES Email +Receiving `__. The following examples show how to: -* Create an email filter using `create_receipt_filter() `__. -* List all email filters using `list_receipt_filters() `__. -* Remove an email filter using `delete_receipt_filter() `__. +* Create an email filter using + `create_receipt_filter() `__. +* List all email filters using + `list_receipt_filters() `__. +* Remove an email filter using + `delete_receipt_filter() `__. + Prerequisite Tasks ================== @@ -33,10 +43,14 @@ To set up and run this example, you must first complete these tasks: * Configure your AWS credentials, as described in :doc:`quickstart`. + Create an Email Filter ====================== -To allow or block emails from a specific IP address, use the `CreateReceiptFilter `__ operation. Provide the IP address or range of addresses and a unique name to identify this filter. +To allow or block emails from a specific IP address, use the +`CreateReceiptFilter `__ +operation. Provide the IP address or range of addresses and a unique name to +identify this filter. Example ------- @@ -61,11 +75,14 @@ Example print(response) + List All Email Filters ====================== -To list the IP address filters associated with your AWS account in the current AWS Region, use the `ListReceiptFilters `__ operation. - +To list the IP address filters associated with your AWS account in the current +AWS Region, use the +`ListReceiptFilters `__ +operation. Example ------- @@ -81,12 +98,17 @@ Example print(response) + Delete an Email Filter ====================== -To remove an existing filter for a specific IP address use the `DeleteReceiptFilter `__ operation. Provide the unique filter name to identify the receipt filter to delete. +To remove an existing filter for a specific IP address use the +`DeleteReceiptFilter `__ +operation. Provide the unique filter name to identify the receipt filter to +delete. -If you need to change the range of addresses that are filtered, you can delete a receipt filter and create a new one. +If you need to change the range of addresses that are filtered, you can delete +a receipt filter and create a new one. Example ------- diff --git a/docs/source/guide/ses-rules.rst b/docs/source/guide/ses-rules.rst index 6b4a5b1..2f17a15 100644 --- a/docs/source/guide/ses-rules.rst +++ b/docs/source/guide/ses-rules.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the @@ -9,19 +9,26 @@ limitations under the License. .. _aws-boto3-ses-rules: - + + #################################################### Creating and Managing Email Rules with the SES API #################################################### .. meta:: :description: Use the Amazon SES API to manage email rules. - :keywords: Amazon SES code examples for Python, managing email rules with Python + :keywords: SES Python -In addition to sending emails, you can also receive email with Amazon Simple Email Service (SES). Receipt rules enable you to specify what SES does with email it receives for the email addresses or domains you own. -A rule can send email to other AWS services including but not limited to Amazon S3, Amazon SNS, or AWS Lambda. +In addition to sending emails, you can also receive email with Amazon Simple +Email Service (SES). Receipt rules enable you to specify what SES does with +email it receives for the email addresses or domains you own. A rule can send +email to other AWS services including but not limited to Amazon S3, Amazon +SNS, or AWS Lambda. -For more information, see `Managing Receipt Rule Sets for Amazon SES Email Receiving `_ and `Managing Receipt Rules for Amazon SES Email Receiving `_. +For more information, see `Managing Receipt Rule Sets for Amazon SES Email +Receiving `_ +and `Managing Receipt Rules for Amazon SES Email +Receiving `_. The following examples show how to: @@ -30,6 +37,7 @@ The following examples show how to: * Remove a receipt rule using `delete_receipt_rule() `_. * Remove a receipt rule set using `delete_receipt_rule_set() `_. + Prerequisite Tasks ================== @@ -37,10 +45,16 @@ To set up and run this example, you must first complete these tasks: * Configure your AWS credentials, as described in :doc:`quickstart`. + Create a Receipt Rule Set ========================== -A receipt rule set contains a collection of receipt rules. You must have at least one receipt rule set associated with your account before you can create a receipt rule. To create a receipt rule set, provide a unique RuleSetName and use the `CreateReceiptRuleSet `_ operation. +A receipt rule set contains a collection of receipt rules. You must have at +least one receipt rule set associated with your account before you can create +a receipt rule. To create a receipt rule set, provide a unique RuleSetName and +use the +`CreateReceiptRuleSet `_ +operation. Example ------- @@ -58,10 +72,17 @@ Example print(response) + Create a Receipt Rule ===================== -Control your incoming email by adding a receipt rule to an existing receipt rule set. This example shows you how to create a receipt rule that sends incoming messages to an Amazon S3 bucket, but you can also send messages to Amazon SNS and AWS Lambda. To create a receipt rule, provide a rule and the RuleSetName to the `CreateReceiptRule `_ operation. +Control your incoming email by adding a receipt rule to an existing +receipt rule set. This example shows you how to create a receipt rule that +sends incoming messages to an Amazon S3 bucket, but you can also send +messages to Amazon SNS and AWS Lambda. To create a receipt rule, provide a +rule and the RuleSetName to the +`CreateReceiptRule `_ +operation. Example ------- @@ -96,12 +117,14 @@ Example print(response) - - Delete a Receipt Rule Set ========================== -Remove a specified receipt rule set that isn't currently disabled. This also deletes all of the receipt rules it contains. To delete a receipt rule set, provide the RuleSetName to the `DeleteReceiptRuleSet `_ operation. +Remove a specified receipt rule set that isn't currently disabled. This also +deletes all of the receipt rules it contains. To delete a receipt rule set, +provide the RuleSetName to the +`DeleteReceiptRuleSet `_ +operation. Example ------- @@ -124,7 +147,9 @@ Example Delete a Receipt Rule ===================== -To delete a specified receipt rule, provide the RuleName and RuleSetName to the `DeleteReceiptRule `_ operation. +To delete a specified receipt rule, provide the RuleName and RuleSetName to the +`DeleteReceiptRule `_ +operation. Example ------- @@ -141,4 +166,3 @@ Example ) print(response) - diff --git a/docs/source/guide/ses-template.rst b/docs/source/guide/ses-template.rst index 917a940..563958d 100644 --- a/docs/source/guide/ses-template.rst +++ b/docs/source/guide/ses-template.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the @@ -16,12 +16,16 @@ Creating Custom Email Templates with Amazon SES .. meta:: :description: Use the Amazon SES API to create and use email templates. - :keywords: Amazon SES code examples for Python, create email templates with Python + :keywords: SES Python -Amazon Simple Email Service (SES) enables you to send emails that are personalized for each recipient by using templates. Templates include a subject line and the text and HTML parts of the email body. The subject and body sections can also contain unique values that are personalized for each recipient. - -For more information, see `Sending Personalized Email Using the Amazon SES `__. +Amazon Simple Email Service (SES) enables you to send emails that are +personalized for each recipient by using templates. Templates include +a subject line and the text and HTML parts of the email body. The subject +and body sections can also contain unique values that are personalized for +each recipient. +For more information, see `Sending Personalized Email Using the Amazon SES +API `__. The following examples show how to: @@ -42,17 +46,21 @@ To set up and run this example, you must first complete these tasks: Create an Email Template ======================== -To create a template to send personalized email messages, use the `CreateTemplate `_ operation. The template can be used by any account authorized to send messages in the AWS Region to which the template is added. +To create a template to send personalized email messages, use the +`CreateTemplate `_ +operation. The template can be used by any account authorized to send +messages in the AWS Region to which the template is added. .. note:: - SES doesn't validate your HTML, so be sure that `HtmlPart` is valid before sending an email. + SES doesn't validate your HTML, so be sure that ``HtmlPart`` is + valid before sending an email. Example ------- .. code-block:: python - import boto3 + import boto3 # Create SES client ses = boto3.client('ses') @@ -115,7 +123,7 @@ Example Update an Email Template ======================== -To change the content for a specific email template including the subject line, HTML body, and plain text, use the `UpdateTemplate `_ operation. +To change the content for a specific email template including the subject line, HTML body, and plain text, use the `UpdateTemplate `_ operation. Example ------- @@ -141,7 +149,7 @@ Example Send an Email with a Template ============================= -To use a template to send an email to recipients, use the `SendTemplatedEmail `__ operation. +To use a template to send an email to recipients, use the `SendTemplatedEmail `__ operation. Example diff --git a/docs/source/guide/ses-verify.rst b/docs/source/guide/ses-verify.rst index f21450d..0131b48 100644 --- a/docs/source/guide/ses-verify.rst +++ b/docs/source/guide/ses-verify.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the @@ -10,26 +10,27 @@ .. _aws-boto3-ses-verify: + ############################################ Verifying Email Identities in Amazon SES ############################################ .. meta:: :description: Use Amazon SES API to verify email addresses and domains. - :keywords: Amazon SES code examples for Python, approve emails recipients with Python + :keywords: SES Python -When you first start using your Amazon Simple Email Service (SES) account, all senders and recipients must be verified in the same AWS Region that you -will be sending emails to. For more information about sending emails, see `Sending Email with Amazon SES `__. +When you first start using your Amazon Simple Email Service (SES) account, +all senders and recipients must be verified in the same AWS Region that you +will be sending emails to. For more information about sending emails, see +`Sending Email with Amazon +SES `__. The following examples show how to: -* Verify an email address using `verify_email_identity() `__. -* Verify an email domain using `verify_domain_identity() `__. -* List all email addresses using `list_identities() `__. -* List all email domains using `list_identities() `__. -* Remove an email address using `delete_identity() `__. -* Remove an email domain using `delete_identity() `__. -All the example code for the Amazon Web Services (AWS) SDK for Python is available `here on GitHub `__. +* Verify an email address using `verify_email_identity() `__. +* Verify an email domain using `verify_domain_identity() `__. +* List all email addresses or domains using `list_identities() `__. +* Remove an email address or domain using `delete_identity() `__. Prerequisite Tasks ================== @@ -38,13 +39,20 @@ To set up and run this example, you must first complete these tasks: * Configure your AWS credentials, as described in :doc:`quickstart`. -Verifying Email addresses -========================= -SES can send email only from verified email addresses or domains. By verifying an email address, you demonstrate that you're the owner of that address and want to allow SES to send email from that address. -When you run the following code example, SES sends an email to the address you specified. When you (or the recipient of the email) click the link in the email, the address is verified. +Verify an Email Address +======================= +SES can send email only from verified email addresses or domains. By +verifying an email address, you demonstrate that you're the owner of that +address and want to allow SES to send email from that address. -To add an email address to your SES account, use the `VerifyEmailIdentity `__ operation. +When you run the following code example, SES sends an email to the address +you specified. When you (or the recipient of the email) click the link in +the email, the address is verified. + +To add an email address to your SES account, use the +`VerifyEmailIdentity `__ +operation. Example ------- @@ -66,18 +74,25 @@ Example Verify an Email Domain ====================== -SES can send email only from verified email addresses or domains. By verifying a domain, you demonstrate that you're the owner of that domain. When you verify a domain, you allow SES to send email from any address on that domain. +SES can send email only from verified email addresses or domains. By verifying +a domain, you demonstrate that you're the owner of that domain. When you +verify a domain, you allow SES to send email from any address on that domain. -When you run the following code example, SES provides you with a verification token. You have to add the token to your domain's DNS configuration. For more information, see `Verifying a Domain with Amazon SES `_. +When you run the following code example, SES provides you with a verification +token. You have to add the token to your domain's DNS configuration. For more +information, see `Verifying a Domain with Amazon +SES `_. -To add a sending domain to your SES account, use the `VerifyDomainIdentity `_ operation. +To add a sending domain to your SES account, use the +`VerifyDomainIdentity `_ +operation. Example ------- .. code-block:: python - mport boto3 + import boto3 # Create SES client ses = boto3.client('ses') @@ -88,10 +103,14 @@ Example print(response) + List Email Addresses ==================== -To retrieve a list of email addresses submitted in the current AWS Region, regardless of verification status, use the `ListIdentities `__ operation. +To retrieve a list of email addresses submitted in the current AWS Region, +regardless of verification status, use the +`ListIdentities `__ +operation. Example ------- @@ -110,10 +129,14 @@ Example print(response) + List Email Domains ================== -To retrieve a list of email domains submitted in the current AWS Region, regardless of verification status use the `ListIdentities `__ operation. +To retrieve a list of email domains submitted in the current AWS Region, +regardless of verification status use the +`ListIdentities `__ +operation. Example ------- @@ -133,11 +156,12 @@ Example print(response) - Delete an Email Address ======================= -To delete a verified email address from the list of verified identities, use the `DeleteIdentity `__ operation. +To delete a verified email address from the list of verified identities, use +the `DeleteIdentity `__ +operation. Example ------- @@ -155,10 +179,13 @@ Example print(response) + Delete an Email Domain ====================== -To delete a verified email domain from the list of verified identities, use the `DeleteIdentity `__ operation. +To delete a verified email domain from the list of verified identities, use the +`DeleteIdentity `__ +operation. Example ------- diff --git a/docs/source/guide/sqs-example-dead-letter-queue.rst b/docs/source/guide/sqs-example-dead-letter-queue.rst index beef399..d354576 100644 --- a/docs/source/guide/sqs-example-dead-letter-queue.rst +++ b/docs/source/guide/sqs-example-dead-letter-queue.rst @@ -1,4 +1,4 @@ -.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +.. Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (the "License"). You may not use this file except in compliance with the @@ -34,17 +34,13 @@ For more information about Amazon SQS dead letter queues, see `Using Amazon SQS Dead Letter Queues `_ in the *Amazon Simple Queue Service Developer Guide*. -All the example code for the Amazon Web Services (AWS) SDK for Python is available `here on GitHub `_. - Prerequisite Tasks ================== To set up and run this example, you must first complete these tasks: -* Configure your AWS credentials, as described in :doc:`quickstart`. - -* Create an Amazon SQS queue to serve as a dead letter queue. For an example of creating a queue, see - :doc:`Using Queues ` in *Amazon SQS*. +* Create an Amazon SQS queue to serve as a dead letter queue. For an example + of creating an Amazon SQS queue, see :ref:`aws-boto3-sqs-create-queue`. Configure Source Queues ======================= @@ -87,4 +83,5 @@ Example Attributes={ 'RedrivePolicy': json.dumps(redrive_policy) } - ) \ No newline at end of file + ) + \ No newline at end of file diff --git a/docs/source/guide/sqs-example-long-polling.rst b/docs/source/guide/sqs-example-long-polling.rst index 284380d..7077043 100644 --- a/docs/source/guide/sqs-example-long-polling.rst +++ b/docs/source/guide/sqs-example-long-polling.rst @@ -32,8 +32,8 @@ polling, you must specify a non-zero wait time for received messages. You can do :code:`ReceiveMessageWaitTimeSeconds` parameter of a queue or by setting the :code:`WaitTimeSeconds` parameter on a message when it is received. -In this example, Python code is used to enable long polling. The code uses the AWS SDK for Python to -enable long polling using these methods of the AWS.SQS client class: +In these examples, the AWS SDK for Python is used to enable long polling +using the following Amazon SQS methods. * `create_queue `_ @@ -41,19 +41,10 @@ enable long polling using these methods of the AWS.SQS client class: * `receive_message `_. -For more information about Amazon SQS long polling, see -`Long Polling `_ +For more information, see +`Amazon SQS Long Polling `_ in the *Amazon Simple Queue Service Developer Guide*. -All the example code for the Amazon Web Services (AWS) SDK for Python is available `here on GitHub `_. - -Prerequisite Tasks -================== - -To set up and run this example, you must first complete these tasks: - -* Configure your AWS credentials, as described in :doc:`quickstart`. - Enable Long Polling When Creating a Queue ========================================= @@ -61,7 +52,6 @@ The example below shows how to: * Create a queue and enable long polling using `create_queue `_. - Example ------- @@ -81,7 +71,6 @@ Example print(response['QueueUrl']) - Enable Long Polling on an Existing Queue ======================================== @@ -89,12 +78,11 @@ The example below shows how to: * Enable long polling on an existing queue using `set_queue_attributes `_. - Example ------- -.. code:: python +.. code-block:: python import boto3 @@ -112,21 +100,15 @@ Example Enable Long Polling on Message Receipt ====================================== -Get one or more messages (up to 10), from the specified queue. Using the WaitTimeSeconds -parameter enables long-poll support. For more information, see -`Amazon SQS Long Polling `_ -in the *Amazon SQS Developer Guide*. - The example below shows how to: -* Enable a long poll for message on provided SQS queue using +* Enable long polling for a message on an SQS queue using `receive_message `_. - Example ------- -.. code-block:: python/example_code +.. code-block:: python import boto3 diff --git a/docs/source/guide/sqs-example-sending-receiving-msgs.rst b/docs/source/guide/sqs-example-sending-receiving-msgs.rst index bbd8d9e..ec10ef8 100644 --- a/docs/source/guide/sqs-example-sending-receiving-msgs.rst +++ b/docs/source/guide/sqs-example-sending-receiving-msgs.rst @@ -33,18 +33,15 @@ For more information about Amazon SQS messages, see and `Receiving and Deleting a Message from an Amazon SQS Queue `_ in the *Amazon Simple Queue Service Developer Guide*. -All the example code for the Amazon Web Services (AWS) SDK for Python is available `here on GitHub `_. - Prerequisite Tasks ================== To set up and run this example, you must first complete these tasks: -* Configure your AWS credentials, as described in :doc:`quickstart`. - -* Create an Amazon SQS queue. For an example of creating a queue, see - :doc:`Using Queues in Amazon SQS `. +* Create an Amazon SQS queue. For an example of creating an Amazon SQS + queue, see :ref:`aws-boto3-sqs-create-queue`. +.. _aws-boto3-sqs-send-message: Send a Message to a Queue ========================= @@ -139,4 +136,3 @@ Example ReceiptHandle=receipt_handle ) print('Received and deleted message: %s' % message) - diff --git a/docs/source/guide/sqs-example-using-queues.rst b/docs/source/guide/sqs-example-using-queues.rst index 13d7f48..c1efd34 100644 --- a/docs/source/guide/sqs-example-using-queues.rst +++ b/docs/source/guide/sqs-example-using-queues.rst @@ -40,15 +40,6 @@ For more information about Amazon SQS messages, see `How Queues Work `_ in the *Amazon Simple Queue Service Developer Guide*. -All the example code for the Amazon Web Services (AWS) SDK for Python is available `here on GitHub `_. - -Prerequisite Tasks -================== - -To set up and run this example, you must first complete this task: - -* Configure your AWS credentials, as described in :doc:`quickstart`. - List Your Queues ================ @@ -71,7 +62,9 @@ Example response = sqs.list_queues() print(response['QueueUrls']) - + +.. _aws-boto3-sqs-create-queue: + Create a Queue ============== @@ -144,6 +137,3 @@ Example # Delete SQS queue sqs.delete_queue(QueueUrl='SQS_QUEUE_URL') - - - \ No newline at end of file diff --git a/docs/source/guide/sqs-example-visibility-timeout.rst b/docs/source/guide/sqs-example-visibility-timeout.rst index fa6cf0c..d0858e6 100644 --- a/docs/source/guide/sqs-example-visibility-timeout.rst +++ b/docs/source/guide/sqs-example-visibility-timeout.rst @@ -29,20 +29,16 @@ For more information about Amazon SQS visibility timeout, see `Visibility Timeout `_ in the *Amazon Simple Queue Service Developer Guide*. -All the example code for the Amazon Web Services (AWS) SDK for Python is available `here on GitHub `_. - Prerequisite Tasks ================== To set up and run this example, you must first complete these tasks: -* Configure your AWS credentials, as described in :doc:`quickstart`. +* Create an Amazon SQS queue. For an example of creating an Amazon SQS + queue, see :ref:`aws-boto3-sqs-create-queue`. -* Create an Amazon SQS queue. For an example of creating a queue, see - :doc:`Using Queues in Amazon SQS `. - -* Send a message to the queue. For an example of sending a message to a queue, see - :doc:`Sending and Receiving Messages in Amazon SQS `. +* Send a message to the queue. For an example of sending a message to a + queue, see :ref:`aws-boto3-sqs-send-message`. Change the Visibility Timeout ============================= diff --git a/docs/source/guide/sqs-examples.rst b/docs/source/guide/sqs-examples.rst index de45fea..3a842ca 100644 --- a/docs/source/guide/sqs-examples.rst +++ b/docs/source/guide/sqs-examples.rst @@ -16,12 +16,21 @@ Amazon SQS Examples .. meta:: :description: - :keywords: AWS IAM SQS code examples for Boto3 + :keywords: AWS SQS -You can use the following examples to access Amazon Simple Queue Service (Amazon SQS) using -AWS Boto. For more information about Amazon SQS, see the `Amazon SQS documentation +The code examples in this section demonstrate using the Amazon Web Services +(AWS) SDK for Python to call the Amazon Simple Queue Service (Amazon SQS). +For more information about Amazon SQS, see the `Amazon SQS documentation `_. +Each code example requires that your AWS credentials have been configured as +described in :ref:`guide_quickstart`. Some examples require additional +prerequisites which are described in the example's section. + +The source files for these and other code examples are available in the +`AWS Code Catalog `_ +on GitHub. + **Examples** .. toctree:: @@ -32,5 +41,4 @@ AWS Boto. For more information about Amazon SQS, see the `Amazon SQS documentati sqs-example-visibility-timeout sqs-example-long-polling sqs-example-dead-letter-queue - - + \ No newline at end of file diff --git a/docs/source/index.rst b/docs/source/index.rst index d66a351..120ef32 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -5,11 +5,10 @@ Boto 3 Documentation ==================== -Boto is the Amazon Web Services (AWS) SDK for Python, which allows Python -developers to write software that makes use of Amazon services like S3 and -EC2. Boto provides an easy to use, object-oriented API as well as low-level -direct service access. - +Boto is the Amazon Web Services (AWS) SDK for Python. It enables Python +developers to create, configure, and manage AWS services, such as EC2 +and S3. Boto provides an easy to use, object-oriented API, as well as +low-level access to AWS services. Quickstart ---------- @@ -21,15 +20,14 @@ Quickstart guide/sqs guide/examples -User Guide ----------- +User Guides +----------- .. toctree:: + :maxdepth: 3 guide/index - - API Reference ------------- diff --git a/setup.cfg b/setup.cfg index 7ce9398..3958be2 100644 --- a/setup.cfg +++ b/setup.cfg @@ -3,6 +3,6 @@ universal = 1 [metadata] requires-dist = - botocore>=1.12.86,<1.13.0 + botocore>=1.12.253,<1.13.0 jmespath>=0.7.1,<1.0.0 - s3transfer>=0.1.10,<0.2.0 + s3transfer>=0.2.0,<0.3.0 diff --git a/setup.py b/setup.py index 3ae0d99..fb4829f 100644 --- a/setup.py +++ b/setup.py @@ -14,9 +14,9 @@ VERSION_RE = re.compile(r'''__version__ = ['"]([0-9.]+)['"]''') requires = [ - 'botocore>=1.12.86,<1.13.0', + 'botocore>=1.12.253,<1.13.0', 'jmespath>=0.7.1,<1.0.0', - 's3transfer>=0.1.10,<0.2.0' + 's3transfer>=0.2.0,<0.3.0' ] diff --git a/tests/integration/test_dynamodb.py b/tests/integration/test_dynamodb.py index ebbe4b7..beb3ed3 100644 --- a/tests/integration/test_dynamodb.py +++ b/tests/integration/test_dynamodb.py @@ -10,10 +10,10 @@ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF # ANY KIND, either express or implied. See the License for the specific # language governing permissions and limitations under the License. -import collections from decimal import Decimal import boto3.session +from boto3.compat import collections_abc from boto3.dynamodb.types import Binary from boto3.dynamodb.conditions import Attr, Key from tests import unittest, unique_id @@ -167,7 +167,7 @@ class TestDynamoDBConditions(BaseDynamoDBTest): def test_condition_attribute_type(self): r = self.scan( filter_expression=Attr('MyMap').attribute_type('M')) - self.assertIsInstance(r['Items'][0]['MyMap'], collections.Mapping) + self.assertIsInstance(r['Items'][0]['MyMap'], collections_abc.Mapping) def test_condition_and(self): r = self.scan( diff --git a/tests/integration/test_s3.py b/tests/integration/test_s3.py index b4236ae..4baa29b 100644 --- a/tests/integration/test_s3.py +++ b/tests/integration/test_s3.py @@ -187,6 +187,9 @@ class TestS3Resource(unittest.TestCase): } bucket = self.s3.create_bucket(**kwargs) self.addCleanup(bucket.delete) + + for _ in range(3): + bucket.wait_until_exists() return bucket def test_s3(self): @@ -303,8 +306,8 @@ class TestS3Transfers(unittest.TestCase): Key=key) def object_exists(self, key): - self.client.head_object(Bucket=self.bucket_name, - Key=key) + waiter = self.client.get_waiter('object_exists') + waiter.wait(Bucket=self.bucket_name, Key=key) return True def wait_until_object_exists(self, key_name, extra_params=None,