Repository: aws/aws-cli

Issue:
aws s3 cp with GLACIER_IR storage class
Confirm by changing [ ] to [x] below:
- [X] I've gone though the [User Guide](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) and the [API reference](https://docs.aws.amazon.com/cli/latest/reference/)
- [X] I've searched for [previous similar issues](https://github.com/aws/aws-cli/issues) and didn't find any solution

Issue is about usage on:
aws s3 cp storage class

**Platform/OS/Hardware/Device**
Cent 7.5
aws-cli/2.4.4 

**Describe the question**

Anybody knows when the AWS CLI will suport then new Glacier instant, works with the API, but not via s3 cp

root ~ $ `aws s3 cp --follow-symlinks /data/emfs1/.projects/premiere/test/IMG_6723.MOV s3://XXX --storage-class GLACIER_IR`

```
aws: error: argument --storage-class: Invalid choice, valid choices are:

STANDARD | REDUCED_REDUNDANCY
STANDARD_IA | ONEZONE_IA
INTELLIGENT_TIERING | GLACIER
DEEP_ARCHIVE

Invalid choice: 'GLACIER_IR', maybe you meant:

STANDARD | REDUCED_REDUNDANCY
STANDARD_IA | ONEZONE_IA
INTELLIGENT_TIERING | GLACIER
DEEP_ARCHIVE

GLACIER
```

**Logs/output**

```
Invalid choice: 'GLACIER_IR', maybe you meant:

STANDARD | REDUCED_REDUNDANCY
STANDARD_IA | ONEZONE_IA
INTELLIGENT_TIERING | GLACIER
DEEP_ARCHIVE

```


Discussion:

Patch:
diff --git a/.changes/1.22.22.json b/.changes/1.22.22.json
deleted file mode 100644
index 8ed14f957..000000000
--- a/.changes/1.22.22.json
+++ /dev/null
@@ -1,42 +0,0 @@
-[
-  {
-    "category": "``health``",
-    "description": "Documentation updates for AWS Health",
-    "type": "api-change"
-  },
-  {
-    "category": "``logs``",
-    "description": "This release adds AWS Organizations support as condition key in destination policy for cross account Subscriptions in CloudWatch Logs.",
-    "type": "api-change"
-  },
-  {
-    "category": "``iot``",
-    "description": "This release allows customer to enable caching of custom authorizer on HTTP protocol for clients that use persistent or Keep-Alive connection in order to reduce the number of Lambda invocations.",
-    "type": "api-change"
-  },
-  {
-    "category": "``sagemaker``",
-    "description": "This release added a new Ambarella device(amba_cv2) compilation support for Sagemaker Neo.",
-    "type": "api-change"
-  },
-  {
-    "category": "``outposts``",
-    "description": "This release adds the UpdateOutpost API.",
-    "type": "api-change"
-  },
-  {
-    "category": "``lookoutvision``",
-    "description": "This release adds new APIs for packaging an Amazon Lookout for Vision model as an AWS IoT Greengrass component.",
-    "type": "api-change"
-  },
-  {
-    "category": "``comprehendmedical``",
-    "description": "This release adds a new set of APIs (synchronous and batch) to support the SNOMED-CT ontology.",
-    "type": "api-change"
-  },
-  {
-    "category": "``support``",
-    "description": "Documentation updates for AWS Support.",
-    "type": "api-change"
-  }
-]
\ No newline at end of file
diff --git a/.changes/next-release/bugfix-s3-66408.json b/.changes/next-release/bugfix-s3-66408.json
new file mode 100644
index 000000000..e629c877e
--- /dev/null
+++ b/.changes/next-release/bugfix-s3-66408.json
@@ -0,0 +1,5 @@
+{
+  "type": "bugfix",
+  "category": "s3",
+  "description": "Support for S3 Glacer Instant Retrieval storage class.  Fixes `#6587 <https://github.com/aws/aws-cli/issues/6587>`__"
+}
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index a0f9dd4af..1e53cb2cc 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -2,19 +2,6 @@
 CHANGELOG
 =========
 
-1.22.22
-=======
-
-* api-change:``health``: Documentation updates for AWS Health
-* api-change:``logs``: This release adds AWS Organizations support as condition key in destination policy for cross account Subscriptions in CloudWatch Logs.
-* api-change:``iot``: This release allows customer to enable caching of custom authorizer on HTTP protocol for clients that use persistent or Keep-Alive connection in order to reduce the number of Lambda invocations.
-* api-change:``sagemaker``: This release added a new Ambarella device(amba_cv2) compilation support for Sagemaker Neo.
-* api-change:``outposts``: This release adds the UpdateOutpost API.
-* api-change:``lookoutvision``: This release adds new APIs for packaging an Amazon Lookout for Vision model as an AWS IoT Greengrass component.
-* api-change:``comprehendmedical``: This release adds a new set of APIs (synchronous and batch) to support the SNOMED-CT ontology.
-* api-change:``support``: Documentation updates for AWS Support.
-
-
 1.22.21
 =======
 
diff --git a/awscli/__init__.py b/awscli/__init__.py
index 5692ae4b5..4b8788630 100644
--- a/awscli/__init__.py
+++ b/awscli/__init__.py
@@ -17,7 +17,7 @@ A Universal Command Line Environment for Amazon Web Services.
 """
 import os
 
-__version__ = '1.22.22'
+__version__ = '1.22.21'
 
 #
 # Get our data path to be added to botocore's search path
diff --git a/awscli/customizations/s3/subcommands.py b/awscli/customizations/s3/subcommands.py
index b8dc4b86e..57ed1ea92 100644
--- a/awscli/customizations/s3/subcommands.py
+++ b/awscli/customizations/s3/subcommands.py
@@ -249,12 +249,12 @@ SSE_C_COPY_SOURCE_KEY = {
 STORAGE_CLASS = {'name': 'storage-class',
                  'choices': ['STANDARD', 'REDUCED_REDUNDANCY', 'STANDARD_IA',
                              'ONEZONE_IA', 'INTELLIGENT_TIERING', 'GLACIER',
-                             'DEEP_ARCHIVE'],
+                             'DEEP_ARCHIVE', 'GLACIER_IR'],
                  'help_text': (
                      "The type of storage to use for the object. "
                      "Valid choices are: STANDARD | REDUCED_REDUNDANCY "
                      "| STANDARD_IA | ONEZONE_IA | INTELLIGENT_TIERING "
-                     "| GLACIER | DEEP_ARCHIVE. "
+                     "| GLACIER | DEEP_ARCHIVE | GLACIER_IR. "
                      "Defaults to 'STANDARD'")}
 
 
diff --git a/doc/source/conf.py b/doc/source/conf.py
index c4ad41d42..60cf0180f 100644
--- a/doc/source/conf.py
+++ b/doc/source/conf.py
@@ -52,7 +52,7 @@ copyright = u'2018, Amazon Web Services'
 # The short X.Y version.
 version = '1.22.'
 # The full version, including alpha/beta/rc tags.
-release = '1.22.22'
+release = '1.22.21'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff --git a/setup.cfg b/setup.cfg
index ff03a3d21..728c7931e 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -3,7 +3,7 @@ universal = 0
 
 [metadata]
 requires_dist =
-        botocore==1.23.22
+        botocore==1.23.21
         docutils>=0.10,<0.16
         s3transfer>=0.5.0,<0.6.0
         PyYAML>=3.10,<5.5
diff --git a/setup.py b/setup.py
index d436ea89e..074540a16 100644
--- a/setup.py
+++ b/setup.py
@@ -24,7 +24,7 @@ def find_version(*file_paths):
 
 
 install_requires = [
-    'botocore==1.23.22',
+    'botocore==1.23.21',
     'docutils>=0.10,<0.16',
     's3transfer>=0.5.0,<0.6.0',
     'PyYAML>=3.10,<5.5',


Test patch:
diff --git a/tests/unit/customizations/s3/test_copy_params.py b/tests/unit/customizations/s3/test_copy_params.py
index f9a2a82f9..1f735f96d 100644
--- a/tests/unit/customizations/s3/test_copy_params.py
+++ b/tests/unit/customizations/s3/test_copy_params.py
@@ -80,6 +80,15 @@ class TestGetObject(BaseAWSCommandParamsTest):
                   'StorageClass': u'STANDARD_IA'}
         self.assert_params(cmdline, result)
 
+    def test_glacier_ir_storage_class(self):
+        cmdline = self.prefix
+        cmdline += self.file_path
+        cmdline += ' s3://mybucket/mykey'
+        cmdline += ' --storage-class GLACIER_IR'
+        result = {'Bucket': u'mybucket', 'Key': u'mykey',
+                  'StorageClass': u'GLACIER_IR'}
+        self.assert_params(cmdline, result)
+
     def test_website_redirect(self):
         cmdline = self.prefix
         cmdline += self.file_path