 Fix:restore deep archive object
diff --git a/localstack/services/s3/s3_starter.py b/localstack/services/s3/s3_starter.py
index 154feffd0e5da..adb027a30f04d 100644
--- a/localstack/services/s3/s3_starter.py
+++ b/localstack/services/s3/s3_starter.py
@@ -181,7 +181,8 @@ def s3_key_response_get(self, bucket_name, query, key_name, headers, *args, **kw
         resp_status, resp_headers, resp_value = s3_key_response_get_orig(
             bucket_name, query, key_name, headers, *args, **kwargs
         )
-        if resp_headers.get('x-amz-storage-class') == 'DEEP_ARCHIVE':
+
+        if resp_headers.get('x-amz-storage-class') == 'DEEP_ARCHIVE' and not resp_headers.get('x-amz-restore'):
             raise InvalidObjectState()
 
         return resp_status, resp_headers, resp_value
diff --git a/tests/integration/test_s3.py b/tests/integration/test_s3.py
index 960e0b3f357b7..ed69727ee9a51 100644
--- a/tests/integration/test_s3.py
+++ b/tests/integration/test_s3.py
@@ -1348,6 +1348,51 @@ def test_s3_get_deep_archive_object(self):
         # clean up
         self._delete_bucket(bucket_name, [object_key])
 
+    def test_s3_get_deep_archive_object_restore(self):
+        bucket_name = 'bucket-%s' % short_uid()
+        object_key = 'key-%s' % short_uid()
+
+        self.s3_client.create_bucket(Bucket=bucket_name)
+
+        # put DEEP_ARCHIVE object
+        self.s3_client.put_object(
+            Bucket=bucket_name,
+            Key=object_key,
+            Body='body data',
+            StorageClass='DEEP_ARCHIVE'
+        )
+
+        with self.assertRaises(ClientError) as ctx:
+            self.s3_client.get_object(
+                Bucket=bucket_name,
+                Key=object_key
+            )
+
+        self.assertIn('InvalidObjectState', str(ctx.exception))
+
+        # put DEEP_ARCHIVE object
+        self.s3_client.restore_object(
+            Bucket=bucket_name,
+            Key=object_key,
+            RestoreRequest={
+                'Days': 30,
+                'GlacierJobParameters': {
+                    'Tier': 'Bulk'
+                },
+                'Tier': 'Bulk',
+            },
+        )
+
+        response = self.s3_client.get_object(
+            Bucket=bucket_name,
+            Key=object_key
+        )
+
+        self.assertIn('etag', response.get('ResponseMetadata').get('HTTPHeaders'))
+
+        # clean up
+        self._delete_bucket(bucket_name, [object_key])
+
     def test_encoding_notification_messages(self):
         key = 'a@b'
         bucket_name = 'notif-enc-%s' % short_uid()


Fix:restore deep archive object