You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by fg...@apache.org on 2023/01/23 18:34:03 UTC
[nifi-minifi-cpp] 02/03: MINIFICPP-2032 Add support for new AWS regions
This is an automated email from the ASF dual-hosted git repository.
fgerlits pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git
commit 572e7e928c3dbad075d00c185f1d3e5c808b305d
Author: Gabor Gyimesi <ga...@gmail.com>
AuthorDate: Wed Jan 11 09:19:34 2023 +0100
MINIFICPP-2032 Add support for new AWS regions
Signed-off-by: Ferenc Gerlits <fg...@gmail.com>
This closes #1491
---
CMakeLists.txt | 4 -
PROCESSORS.md | 155 +++++++++++----------
cmake/BundledAwsSdkCpp.cmake | 15 +-
extensions/aws/processors/S3Processor.h | 5 +
.../processors/S3ProcessorStaticDefinitions.cpp | 7 +-
extensions/aws/s3/S3ClientRequestSender.cpp | 28 ++--
extensions/aws/s3/S3ClientRequestSender.h | 14 +-
extensions/aws/s3/S3Wrapper.h | 6 +-
libminifi/test/aws-tests/PutS3ObjectTests.cpp | 4 +-
minifi_main/CMakeLists.txt | 3 +
thirdparty/aws-sdk-cpp/bundle-openssl.patch | 46 ++++++
.../aws-sdk-cpp/c++20-compilation-fixes.patch | 27 +---
thirdparty/aws-sdk-cpp/dll-export-injection.patch | 34 +++--
thirdparty/aws-sdk-cpp/shutdown-fix.patch | 9 +-
14 files changed, 192 insertions(+), 165 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b7166f2c8..35cf83db7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -109,10 +109,6 @@ if (WIN32)
add_compile_options(/W3 /utf-8)
endif()
-if (WIN32)
- add_definitions(-DSERVICE_NAME="Apache NiFi MINiFi")
-endif()
-
if (NOT PORTABLE)
if(MSVC)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /arch:AVX2")
diff --git a/PROCESSORS.md b/PROCESSORS.md
index c8cee2b17..31e0de24d 100644
--- a/PROCESSORS.md
+++ b/PROCESSORS.md
@@ -524,22 +524,22 @@ Deletes FlowFiles on an Amazon S3 Bucket. If attempting to delete a file that do
In the list below, the names of required properties appear in bold. Any other properties (not in bold) are considered optional. The table also indicates any default values, and whether a property supports the NiFi Expression Language.
-| Name | <div style="width:7em">Default Value</div> | <div style="width:8em">Allowable Values</div> | Description [...]
-|----------------------------------|--------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------- [...]
-| Object Key | | | The key of t [...]
-| **Bucket** | | | The S3 bucke [...]
-| Access Key | | | AWS account [...]
-| Secret Key | | | AWS account [...]
-| Credentials File | | | Path to a fi [...]
-| AWS Credentials Provider service | | | The name of [...]
-| **Region** | us-west-2 | af-south-1<br/>ap-east-1<br/>ap-northeast-1<br/>ap-northeast-2<br/>ap-northeast-3<br/>ap-south-1<br/>ap-southeast-1<br/>ap-southeast-2<br/>ca-central-1<br/>cn-north-1<br/>cn-northwest-1<br/>eu-central-1<br/>eu-north-1<br/>eu-south-1<br/>eu-west-1<br/>eu-west-2<br/>eu-west-3<br/>me-south-1<br/>sa-east-1<br/>us-east-1<br/>us-east-2<br/>us-gov-east-1<br/>us-gov-west-1<br/>us-west-1<br/>us-west-2 | AWS Region [...]
-| **Communications Timeout** | 30 sec | | Sets the tim [...]
-| Endpoint Override URL | | | Endpoint URL [...]
-| Proxy Host | | | Proxy host n [...]
-| Proxy Port | | | The port num [...]
-| Proxy Username | | | Username to [...]
-| Proxy Password | | | Password to [...]
-| Version | | | The Version [...]
+| Name | <div style="width:7em">Default Value</div> | <div style="width:8em">Allowable Values</div> [...]
+|----------------------------------|--------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [...]
+| Object Key | | [...]
+| **Bucket** | | [...]
+| Access Key | | [...]
+| Secret Key | | [...]
+| Credentials File | | [...]
+| AWS Credentials Provider service | | [...]
+| **Region** | us-west-2 | af-south-1<br/>ap-east-1<br/>ap-northeast-1<br/>ap-northeast-2<br/>ap-northeast-3<br/>ap-south-1<br/>ap-southeast-1<br/>ap-southeast-2<br/>ap-southeast-3<br/>ca-central-1<br/>cn-north-1<br/>cn-northwest-1<br/>eu-central-1<br/>eu-north-1<br/>eu-south-1<br/>eu-west-1<br/>eu-west-2<br/>eu-west-3<br/>me-central-1<br/>me-south-1<br/>sa-east-1<br/>us-east-1<br/>us-east-2<br/>us-gov-east-1<br/>us-gov-west-1<br/>us [...]
+| **Communications Timeout** | 30 sec | [...]
+| Endpoint Override URL | | [...]
+| Proxy Host | | [...]
+| Proxy Port | | [...]
+| Proxy Username | | [...]
+| Proxy Password | | [...]
+| Version | | [...]
### Relationships
| Name | Description |
@@ -829,23 +829,23 @@ Retrieves the contents of an S3 Object and writes it to the content of a FlowFil
In the list below, the names of required properties appear in bold. Any other properties (not in bold) are considered optional. The table also indicates any default values, and whether a property supports the NiFi Expression Language.
-| Name | <div style="width:7em">Default Value</div> | <div style="width:8em">Allowable Values</div> | Description [...]
-|----------------------------------|--------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------- [...]
-| Object Key | | | The key of t [...]
-| **Bucket** | | | The S3 bucke [...]
-| Access Key | | | AWS account [...]
-| Secret Key | | | AWS account [...]
-| Credentials File | | | Path to a fi [...]
-| AWS Credentials Provider service | | | The name of [...]
-| **Region** | us-west-2 | af-south-1<br/>ap-east-1<br/>ap-northeast-1<br/>ap-northeast-2<br/>ap-northeast-3<br/>ap-south-1<br/>ap-southeast-1<br/>ap-southeast-2<br/>ca-central-1<br/>cn-north-1<br/>cn-northwest-1<br/>eu-central-1<br/>eu-north-1<br/>eu-south-1<br/>eu-west-1<br/>eu-west-2<br/>eu-west-3<br/>me-south-1<br/>sa-east-1<br/>us-east-1<br/>us-east-2<br/>us-gov-east-1<br/>us-gov-west-1<br/>us-west-1<br/>us-west-2 | AWS Region [...]
-| **Communications Timeout** | 30 sec | | Sets the tim [...]
-| Endpoint Override URL | | | Endpoint URL [...]
-| Proxy Host | | | Proxy host n [...]
-| Proxy Port | | | The port num [...]
-| Proxy Username | | | Username to [...]
-| Proxy Password | | | Password to [...]
-| Version | | | The Version [...]
-| **Requester Pays** | false | | If true, ind [...]
+| Name | <div style="width:7em">Default Value</div> | <div style="width:8em">Allowable Values</div> [...]
+|----------------------------------|--------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [...]
+| Object Key | | [...]
+| **Bucket** | | [...]
+| Access Key | | [...]
+| Secret Key | | [...]
+| Credentials File | | [...]
+| AWS Credentials Provider service | | [...]
+| **Region** | us-west-2 | af-south-1<br/>ap-east-1<br/>ap-northeast-1<br/>ap-northeast-2<br/>ap-northeast-3<br/>ap-south-1<br/>ap-southeast-1<br/>ap-southeast-2<br/>ap-southeast-3<br/>ca-central-1<br/>cn-north-1<br/>cn-northwest-1<br/>eu-central-1<br/>eu-north-1<br/>eu-south-1<br/>eu-west-1<br/>eu-west-2<br/>eu-west-3<br/>me-central-1<br/>me-south-1<br/>sa-east-1<br/>us-east-1<br/>us-east-2<br/>us-gov-east-1<br/>us-gov-west-1<br/>us [...]
+| **Communications Timeout** | 30 sec | [...]
+| Endpoint Override URL | | [...]
+| Proxy Host | | [...]
+| Proxy Port | | [...]
+| Proxy Username | | [...]
+| Proxy Password | | [...]
+| Version | | [...]
+| **Requester Pays** | false | [...]
### Relationships
| Name | Description |
@@ -1419,27 +1419,27 @@ Retrieves a listing of objects from an S3 bucket. For each object that is listed
In the list below, the names of required properties appear in bold. Any other properties (not in bold) are considered optional. The table also indicates any default values, and whether a property supports the NiFi Expression Language.
-| Name | Default Value | Allowable Values | Description [...]
-|----------------------------------|---------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------ [...]
-| **Bucket** | | | The S3 bucket<br/>**Supports Expression L [...]
-| Access Key | | | AWS account access key<br/>**Supports Exp [...]
-| Secret Key | | | AWS account secret key<br/>**Supports Exp [...]
-| Credentials File | | | Path to a file containing AWS access key [...]
-| AWS Credentials Provider service | | | The name of the AWS Credentials Provider [...]
-| **Region** | us-west-2 | af-south-1<br/>ap-east-1<br/>ap-northeast-1<br/>ap-northeast-2<br/>ap-northeast-3<br/>ap-south-1<br/>ap-southeast-1<br/>ap-southeast-2<br/>ca-central-1<br/>cn-north-1<br/>cn-northwest-1<br/>eu-central-1<br/>eu-north-1<br/>eu-south-1<br/>eu-west-1<br/>eu-west-2<br/>eu-west-3<br/>me-south-1<br/>sa-east-1<br/>us-east-1<br/>us-east-2<br/>us-gov-east-1<br/>us-gov-west-1<br/>us-west-1<br/>us-west-2 | AWS Region [...]
-| **Communications Timeout** | 30 sec | | Sets the timeout of the communication bet [...]
-| Endpoint Override URL | | | Endpoint URL to use instead of the AWS de [...]
-| Proxy Host | | | Proxy host name or IP<br/>**Supports Expr [...]
-| Proxy Port | | | The port number of the proxy host<br/>**S [...]
-| Proxy Username | | | Username to set when authenticating again [...]
-| Proxy Password | | | Password to set when authenticating again [...]
-| Delimiter | | | The string used to delimit directories wi [...]
-| Prefix | | | The prefix used to filter the object list [...]
-| **Use Versions** | false | | Specifies whether to use S3 versions, if [...]
-| **Minimum Object Age** | 0 sec | | The minimum age that an S3 object must be [...]
-| **Write Object Tags** | false | | If set to 'true', the tags associated wit [...]
-| **Write User Metadata** | false | | If set to 'true', the user defined metada [...]
-| **Requester Pays** | false | | If true, indicates that the requester con [...]
+| Name | Default Value | Allowable Values [...]
+|----------------------------------|---------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [...]
+| **Bucket** | | [...]
+| Access Key | | [...]
+| Secret Key | | [...]
+| Credentials File | | [...]
+| AWS Credentials Provider service | | [...]
+| **Region** | us-west-2 | af-south-1<br/>ap-east-1<br/>ap-northeast-1<br/>ap-northeast-2<br/>ap-northeast-3<br/>ap-south-1<br/>ap-southeast-1<br/>ap-southeast-2<br/>ap-southeast-3<br/>ca-central-1<br/>cn-north-1<br/>cn-northwest-1<br/>eu-central-1<br/>eu-north-1<br/>eu-south-1<br/>eu-west-1<br/>eu-west-2<br/>eu-west-3<br/>me-central-1<br/>me-south-1<br/>sa-east-1<br/>us-east-1<br/>us-east-2<br/>us-gov-east-1<br/>us-gov-west-1<br/>us-iso-east-1<br/>us-isob-east- [...]
+| **Communications Timeout** | 30 sec | [...]
+| Endpoint Override URL | | [...]
+| Proxy Host | | [...]
+| Proxy Port | | [...]
+| Proxy Username | | [...]
+| Proxy Password | | [...]
+| Delimiter | | [...]
+| Prefix | | [...]
+| **Use Versions** | false | [...]
+| **Minimum Object Age** | 0 sec | [...]
+| **Write Object Tags** | false | [...]
+| **Write User Metadata** | false | [...]
+| **Requester Pays** | false | [...]
## ListSFTP
@@ -2053,29 +2053,30 @@ Puts FlowFiles to an Amazon S3 Bucket. The upload uses either the PutS3Object me
In the list below, the names of required properties appear in bold. Any other properties (not in bold) are considered optional. The table also indicates any default values, and whether a property supports the NiFi Expression Language.
-| Name | <div style="width:7em">Default Value</div> | <div style="width:8em">Allowable Values</div> | Description [...]
-|----------------------------------|--------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------- [...]
-| Object Key | | | The key of t [...]
-| **Bucket** | | | The S3 bucke [...]
-| Content Type | | | Sets the Con [...]
-| **Use Default Credentials** | false | | If true, use [...]
-| Access Key | | | AWS account [...]
-| Secret Key | | | AWS account [...]
-| Credentials File | | | Path to a fi [...]
-| AWS Credentials Provider service | | | The name of [...]
-| **Storage Class** | Standard | Standard<br/>ReducedRedundancy<br/>StandardIA<br/>OnezoneIA<br/>IntelligentTiering<br/>Glacier<br/>DeepArchive | AWS S3 Stora [...]
-| **Region** | us-west-2 | af-south-1<br/>ap-east-1<br/>ap-northeast-1<br/>ap-northeast-2<br/>ap-northeast-3<br/>ap-south-1<br/>ap-southeast-1<br/>ap-southeast-2<br/>ca-central-1<br/>cn-north-1<br/>cn-northwest-1<br/>eu-central-1<br/>eu-north-1<br/>eu-south-1<br/>eu-west-1<br/>eu-west-2<br/>eu-west-3<br/>me-south-1<br/>sa-east-1<br/>us-east-1<br/>us-east-2<br/>us-gov-east-1<br/>us-gov-west-1<br/>us-west-1<br/>us-west-2 | AWS Region [...]
-| **Communications Timeout** | 30 sec | | Sets the tim [...]
-| FullControl User List | | | A comma-sepa [...]
-| Read Permission User List | | | A comma-sepa [...]
-| Read ACL User List | | | A comma-sepa [...]
-| Write ACL User List | | | A comma-sepa [...]
-| Endpoint Override URL | | | Endpoint URL [...]
-| **Server Side Encryption** | None | None<br/>AES256<br/>aws_kms | Specifies th [...]
-| Proxy Host | | | Proxy host n [...]
-| Proxy Port | | | The port num [...]
-| Proxy Username | | | Username to [...]
-| Proxy Password | | | Password to [...]
+| Name | <div style="width:7em">Default Value</div> | <div style="width:8em">Allowable Values</div> [...]
+|----------------------------------|--------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [...]
+| Object Key | | [...]
+| **Bucket** | | [...]
+| Content Type | | [...]
+| **Use Default Credentials** | false | [...]
+| Access Key | | [...]
+| Secret Key | | [...]
+| Credentials File | | [...]
+| AWS Credentials Provider service | | [...]
+| **Storage Class** | Standard | Standard<br/>ReducedRedundancy<br/>StandardIA<br/>OnezoneIA<br/>IntelligentTiering<br/>Glacier<br/>DeepArchive [...]
+| **Region** | us-west-2 | af-south-1<br/>ap-east-1<br/>ap-northeast-1<br/>ap-northeast-2<br/>ap-northeast-3<br/>ap-south-1<br/>ap-southeast-1<br/>ap-southeast-2<br/>ap-southeast-3<br/>ca-central-1<br/>cn-north-1<br/>cn-northwest-1<br/>eu-central-1<br/>eu-north-1<br/>eu-south-1<br/>eu-west-1<br/>eu-west-2<br/>eu-west-3<br/>me-central-1<br/>me-south-1<br/>sa-east-1<br/>us-east-1<br/>us-east-2<br/>us-gov-east-1<br/>us-gov-west-1<br/>us [...]
+| **Communications Timeout** | 30 sec | [...]
+| FullControl User List | | [...]
+| Read Permission User List | | [...]
+| Read ACL User List | | [...]
+| Write ACL User List | | [...]
+| Canned ACL | | [...]
+| Endpoint Override URL | | [...]
+| **Server Side Encryption** | None | None<br/>AES256<br/>aws_kms [...]
+| Proxy Host | | [...]
+| Proxy Port | | [...]
+| Proxy Username | | [...]
+| Proxy Password | | [...]
### Relationships
| Name | Description |
diff --git a/cmake/BundledAwsSdkCpp.cmake b/cmake/BundledAwsSdkCpp.cmake
index aeb072c25..67c028533 100644
--- a/cmake/BundledAwsSdkCpp.cmake
+++ b/cmake/BundledAwsSdkCpp.cmake
@@ -19,10 +19,12 @@ function(use_bundled_libaws SOURCE_DIR BINARY_DIR)
set(PATCH_FILE1 "${SOURCE_DIR}/thirdparty/aws-sdk-cpp/c++20-compilation-fixes.patch")
set(PATCH_FILE2 "${SOURCE_DIR}/thirdparty/aws-sdk-cpp/dll-export-injection.patch")
set(PATCH_FILE3 "${SOURCE_DIR}/thirdparty/aws-sdk-cpp/shutdown-fix.patch")
+ set(PATCH_FILE4 "${SOURCE_DIR}/thirdparty/aws-sdk-cpp/bundle-openssl.patch")
set(AWS_SDK_CPP_PATCH_COMMAND ${Bash_EXECUTABLE} -c "set -x &&\
(\"${Patch_EXECUTABLE}\" -p1 -R -s -f --dry-run -i \"${PATCH_FILE1}\" || \"${Patch_EXECUTABLE}\" -p1 -N -i \"${PATCH_FILE1}\") &&\
(\"${Patch_EXECUTABLE}\" -p1 -R -s -f --dry-run -i \"${PATCH_FILE2}\" || \"${Patch_EXECUTABLE}\" -p1 -N -i \"${PATCH_FILE2}\") &&\
- (\"${Patch_EXECUTABLE}\" -p1 -R -s -f --dry-run -i \"${PATCH_FILE3}\" || \"${Patch_EXECUTABLE}\" -p1 -N -i \"${PATCH_FILE3}\") ")
+ (\"${Patch_EXECUTABLE}\" -p1 -R -s -f --dry-run -i \"${PATCH_FILE3}\" || \"${Patch_EXECUTABLE}\" -p1 -N -i \"${PATCH_FILE3}\") &&\
+ (\"${Patch_EXECUTABLE}\" -p1 -R -s -f --dry-run -i \"${PATCH_FILE4}\" || \"${Patch_EXECUTABLE}\" -p1 -N -i \"${PATCH_FILE4}\") ")
if (WIN32)
set(LIBDIR "lib")
@@ -56,6 +58,7 @@ function(use_bundled_libaws SOURCE_DIR BINARY_DIR)
"${LIBDIR}/${PREFIX}aws-c-auth.${SUFFIX}"
"${LIBDIR}/${PREFIX}aws-c-cal.${SUFFIX}"
"${LIBDIR}/${PREFIX}aws-c-compression.${SUFFIX}"
+ "${LIBDIR}/${PREFIX}aws-c-sdkutils.${SUFFIX}"
"${LIBDIR}/${PREFIX}aws-cpp-sdk-core.${SUFFIX}"
"${LIBDIR}/${PREFIX}aws-cpp-sdk-s3.${SUFFIX}")
@@ -80,7 +83,7 @@ function(use_bundled_libaws SOURCE_DIR BINARY_DIR)
ExternalProject_Add(
aws-sdk-cpp-external
GIT_REPOSITORY "https://github.com/aws/aws-sdk-cpp.git"
- GIT_TAG "1.9.65"
+ GIT_TAG "1.10.48"
UPDATE_COMMAND git submodule update --init --recursive
SOURCE_DIR "${BINARY_DIR}/thirdparty/aws-sdk-cpp-src"
INSTALL_DIR "${BINARY_DIR}/thirdparty/libaws-install"
@@ -114,6 +117,7 @@ function(use_bundled_libaws SOURCE_DIR BINARY_DIR)
set_target_properties(AWS::s2n PROPERTIES IMPORTED_LOCATION "${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}s2n.${SUFFIX}")
add_dependencies(AWS::s2n aws-sdk-cpp-external)
target_include_directories(AWS::s2n INTERFACE ${LIBAWS_INCLUDE_DIR})
+ target_link_libraries(AWS::s2n INTERFACE OpenSSL::Crypto)
endif()
add_library(AWS::aws-c-io STATIC IMPORTED)
@@ -167,11 +171,16 @@ function(use_bundled_libaws SOURCE_DIR BINARY_DIR)
add_dependencies(AWS::aws-c-compression aws-sdk-cpp-external)
target_include_directories(AWS::aws-c-compression INTERFACE ${LIBAWS_INCLUDE_DIR})
+ add_library(AWS::aws-c-sdkutils STATIC IMPORTED)
+ set_target_properties(AWS::aws-c-sdkutils PROPERTIES IMPORTED_LOCATION "${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-c-sdkutils.${SUFFIX}")
+ add_dependencies(AWS::aws-c-sdkutils aws-sdk-cpp-external)
+ target_include_directories(AWS::aws-c-sdkutils INTERFACE ${LIBAWS_INCLUDE_DIR})
+
add_library(AWS::aws-crt-cpp STATIC IMPORTED)
set_target_properties(AWS::aws-crt-cpp PROPERTIES IMPORTED_LOCATION "${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-crt-cpp.${SUFFIX}")
add_dependencies(AWS::aws-crt-cpp aws-sdk-cpp-external)
target_include_directories(AWS::aws-crt-cpp INTERFACE ${LIBAWS_INCLUDE_DIR})
- target_link_libraries(AWS::aws-crt-cpp INTERFACE AWS::aws-c-io AWS::aws-c-s3 AWS::aws-c-mqtt AWS::aws-c-http AWS::aws-c-cal AWS::aws-c-compression)
+ target_link_libraries(AWS::aws-crt-cpp INTERFACE AWS::aws-c-io AWS::aws-c-s3 AWS::aws-c-mqtt AWS::aws-c-http AWS::aws-c-cal AWS::aws-c-compression AWS::aws-c-sdkutils)
add_library(AWS::aws-cpp-sdk-core STATIC IMPORTED)
set_target_properties(AWS::aws-cpp-sdk-core PROPERTIES IMPORTED_LOCATION "${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-cpp-sdk-core.${SUFFIX}")
diff --git a/extensions/aws/processors/S3Processor.h b/extensions/aws/processors/S3Processor.h
index 0e7b1c780..5be00bc84 100644
--- a/extensions/aws/processors/S3Processor.h
+++ b/extensions/aws/processors/S3Processor.h
@@ -48,6 +48,7 @@ constexpr const char *AP_NORTHEAST_3 = "ap-northeast-3";
constexpr const char *AP_SOUTH_1 = "ap-south-1";
constexpr const char *AP_SOUTHEAST_1 = "ap-southeast-1";
constexpr const char *AP_SOUTHEAST_2 = "ap-southeast-2";
+constexpr const char *AP_SOUTHEAST_3 = "ap-southeast-3";
constexpr const char *CA_CENTRAL_1 = "ca-central-1";
constexpr const char *CN_NORTH_1 = "cn-north-1";
constexpr const char *CN_NORTHWEST_1 = "cn-northwest-1";
@@ -57,12 +58,16 @@ constexpr const char *EU_SOUTH_1 = "eu-south-1";
constexpr const char *EU_WEST_1 = "eu-west-1";
constexpr const char *EU_WEST_2 = "eu-west-2";
constexpr const char *EU_WEST_3 = "eu-west-3";
+constexpr const char *ME_CENTRAL_1 = "me-central-1";
constexpr const char *ME_SOUTH_1 = "me-south-1";
constexpr const char *SA_EAST_1 = "sa-east-1";
constexpr const char *US_EAST_1 = "us-east-1";
constexpr const char *US_EAST_2 = "us-east-2";
constexpr const char *US_GOV_EAST_1 = "us-gov-east-1";
constexpr const char *US_GOV_WEST_1 = "us-gov-west-1";
+constexpr const char *US_ISO_EAST_1 = "us-iso-east-1";
+constexpr const char *US_ISOB_EAST_1 = "us-isob-east-1";
+constexpr const char *US_ISO_WEST_1 = "us-iso-west-1";
constexpr const char *US_WEST_1 = "us-west-1";
constexpr const char *US_WEST_2 = "us-west-2";
diff --git a/extensions/aws/processors/S3ProcessorStaticDefinitions.cpp b/extensions/aws/processors/S3ProcessorStaticDefinitions.cpp
index 1bc96788f..f3abed5d1 100644
--- a/extensions/aws/processors/S3ProcessorStaticDefinitions.cpp
+++ b/extensions/aws/processors/S3ProcessorStaticDefinitions.cpp
@@ -33,9 +33,10 @@ namespace org::apache::nifi::minifi::aws::processors {
const std::set<std::string> S3Processor::REGIONS({region::AF_SOUTH_1, region::AP_EAST_1, region::AP_NORTHEAST_1,
region::AP_NORTHEAST_2, region::AP_NORTHEAST_3, region::AP_SOUTH_1, region::AP_SOUTHEAST_1, region::AP_SOUTHEAST_2,
- region::CA_CENTRAL_1, region::CN_NORTH_1, region::CN_NORTHWEST_1, region::EU_CENTRAL_1, region::EU_NORTH_1,
- region::EU_SOUTH_1, region::EU_WEST_1, region::EU_WEST_2, region::EU_WEST_3, region::ME_SOUTH_1, region::SA_EAST_1,
- region::US_EAST_1, region::US_EAST_2, region::US_GOV_EAST_1, region::US_GOV_WEST_1, region::US_WEST_1, region::US_WEST_2});
+ region::AP_SOUTHEAST_3, region::CA_CENTRAL_1, region::CN_NORTH_1, region::CN_NORTHWEST_1, region::EU_CENTRAL_1,
+ region::EU_NORTH_1, region::EU_SOUTH_1, region::EU_WEST_1, region::EU_WEST_2, region::EU_WEST_3, region::ME_CENTRAL_1,
+ region::ME_SOUTH_1, region::SA_EAST_1, region::US_EAST_1, region::US_EAST_2, region::US_GOV_EAST_1, region::US_GOV_WEST_1,
+ region::US_ISO_EAST_1, region::US_ISOB_EAST_1, region::US_ISO_WEST_1, region::US_WEST_1, region::US_WEST_2});
const core::Property S3Processor::Bucket(
core::PropertyBuilder::createProperty("Bucket")
diff --git a/extensions/aws/s3/S3ClientRequestSender.cpp b/extensions/aws/s3/S3ClientRequestSender.cpp
index 66d415f2c..d24322e41 100644
--- a/extensions/aws/s3/S3ClientRequestSender.cpp
+++ b/extensions/aws/s3/S3ClientRequestSender.cpp
@@ -21,18 +21,13 @@
#include <aws/s3/S3Client.h>
-namespace org {
-namespace apache {
-namespace nifi {
-namespace minifi {
-namespace aws {
-namespace s3 {
+namespace org::apache::nifi::minifi::aws::s3 {
std::optional<Aws::S3::Model::PutObjectResult> S3ClientRequestSender::sendPutObjectRequest(
const Aws::S3::Model::PutObjectRequest& request,
const Aws::Auth::AWSCredentials& credentials,
const Aws::Client::ClientConfiguration& client_config) {
- Aws::S3::S3Client s3_client(credentials, client_config);
+ Aws::S3::S3Client s3_client(credentials, client_config, Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never, true);
auto outcome = s3_client.PutObject(request);
if (outcome.IsSuccess()) {
@@ -48,7 +43,7 @@ bool S3ClientRequestSender::sendDeleteObjectRequest(
const Aws::S3::Model::DeleteObjectRequest& request,
const Aws::Auth::AWSCredentials& credentials,
const Aws::Client::ClientConfiguration& client_config) {
- Aws::S3::S3Client s3_client(credentials, client_config);
+ Aws::S3::S3Client s3_client(credentials, client_config, Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never, true);
Aws::S3::Model::DeleteObjectOutcome outcome = s3_client.DeleteObject(request);
if (outcome.IsSuccess()) {
@@ -67,7 +62,7 @@ std::optional<Aws::S3::Model::GetObjectResult> S3ClientRequestSender::sendGetObj
const Aws::S3::Model::GetObjectRequest& request,
const Aws::Auth::AWSCredentials& credentials,
const Aws::Client::ClientConfiguration& client_config) {
- Aws::S3::S3Client s3_client(credentials, client_config);
+ Aws::S3::S3Client s3_client(credentials, client_config, Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never, true);
auto outcome = s3_client.GetObject(request);
if (outcome.IsSuccess()) {
@@ -83,7 +78,7 @@ std::optional<Aws::S3::Model::ListObjectsV2Result> S3ClientRequestSender::sendLi
const Aws::S3::Model::ListObjectsV2Request& request,
const Aws::Auth::AWSCredentials& credentials,
const Aws::Client::ClientConfiguration& client_config) {
- Aws::S3::S3Client s3_client(credentials, client_config);
+ Aws::S3::S3Client s3_client(credentials, client_config, Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never, true);
auto outcome = s3_client.ListObjectsV2(request);
if (outcome.IsSuccess()) {
@@ -99,7 +94,7 @@ std::optional<Aws::S3::Model::ListObjectVersionsResult> S3ClientRequestSender::s
const Aws::S3::Model::ListObjectVersionsRequest& request,
const Aws::Auth::AWSCredentials& credentials,
const Aws::Client::ClientConfiguration& client_config) {
- Aws::S3::S3Client s3_client(credentials, client_config);
+ Aws::S3::S3Client s3_client(credentials, client_config, Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never, true);
auto outcome = s3_client.ListObjectVersions(request);
if (outcome.IsSuccess()) {
@@ -115,7 +110,7 @@ std::optional<Aws::S3::Model::GetObjectTaggingResult> S3ClientRequestSender::sen
const Aws::S3::Model::GetObjectTaggingRequest& request,
const Aws::Auth::AWSCredentials& credentials,
const Aws::Client::ClientConfiguration& client_config) {
- Aws::S3::S3Client s3_client(credentials, client_config);
+ Aws::S3::S3Client s3_client(credentials, client_config, Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never, true);
auto outcome = s3_client.GetObjectTagging(request);
if (outcome.IsSuccess()) {
@@ -131,7 +126,7 @@ std::optional<Aws::S3::Model::HeadObjectResult> S3ClientRequestSender::sendHeadO
const Aws::S3::Model::HeadObjectRequest& request,
const Aws::Auth::AWSCredentials& credentials,
const Aws::Client::ClientConfiguration& client_config) {
- Aws::S3::S3Client s3_client(credentials, client_config);
+ Aws::S3::S3Client s3_client(credentials, client_config, Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never, true);
auto outcome = s3_client.HeadObject(request);
if (outcome.IsSuccess()) {
@@ -143,9 +138,4 @@ std::optional<Aws::S3::Model::HeadObjectResult> S3ClientRequestSender::sendHeadO
}
}
-} // namespace s3
-} // namespace aws
-} // namespace minifi
-} // namespace nifi
-} // namespace apache
-} // namespace org
+} // namespace org::apache::nifi::minifi::aws::s3
diff --git a/extensions/aws/s3/S3ClientRequestSender.h b/extensions/aws/s3/S3ClientRequestSender.h
index 01b0e5c37..769d7c6d1 100644
--- a/extensions/aws/s3/S3ClientRequestSender.h
+++ b/extensions/aws/s3/S3ClientRequestSender.h
@@ -23,12 +23,7 @@
#include "S3RequestSender.h"
-namespace org {
-namespace apache {
-namespace nifi {
-namespace minifi {
-namespace aws {
-namespace s3 {
+namespace org::apache::nifi::minifi::aws::s3 {
class S3ClientRequestSender : public S3RequestSender {
public:
@@ -62,9 +57,4 @@ class S3ClientRequestSender : public S3RequestSender {
const Aws::Client::ClientConfiguration& client_config) override;
};
-} // namespace s3
-} // namespace aws
-} // namespace minifi
-} // namespace nifi
-} // namespace apache
-} // namespace org
+} // namespace org::apache::nifi::minifi::aws::s3
diff --git a/extensions/aws/s3/S3Wrapper.h b/extensions/aws/s3/S3Wrapper.h
index da37564fa..038d0d029 100644
--- a/extensions/aws/s3/S3Wrapper.h
+++ b/extensions/aws/s3/S3Wrapper.h
@@ -97,9 +97,9 @@ struct PutObjectResult {
};
struct RequestParameters {
- RequestParameters(Aws::Auth::AWSCredentials creds, Aws::Client::ClientConfiguration config)
- : credentials(std::move(creds))
- , client_config(std::move(config)) {}
+ RequestParameters(Aws::Auth::AWSCredentials creds, Aws::Client::ClientConfiguration config)
+ : credentials(std::move(creds)),
+ client_config(std::move(config)) {}
Aws::Auth::AWSCredentials credentials;
Aws::Client::ClientConfiguration client_config;
diff --git a/libminifi/test/aws-tests/PutS3ObjectTests.cpp b/libminifi/test/aws-tests/PutS3ObjectTests.cpp
index 854e5e87e..884bfc7e7 100644
--- a/libminifi/test/aws-tests/PutS3ObjectTests.cpp
+++ b/libminifi/test/aws-tests/PutS3ObjectTests.cpp
@@ -154,7 +154,7 @@ TEST_CASE_METHOD(PutS3ObjectTestsFixture, "Set non-default client configuration"
plan->setProperty(update_attribute, "test.contentType", "application/tar", true);
plan->setProperty(s3_processor, "Content Type", "${test.contentType}");
plan->setProperty(s3_processor, "Storage Class", "ReducedRedundancy");
- plan->setProperty(s3_processor, "Region", minifi::aws::processors::region::US_EAST_1);
+ plan->setProperty(s3_processor, "Region", minifi::aws::processors::region::AP_SOUTHEAST_3);
plan->setProperty(s3_processor, "Communications Timeout", "10 Sec");
plan->setProperty(update_attribute, "test.endpoint", "http://localhost:1234", true);
plan->setProperty(s3_processor, "Endpoint Override URL", "${test.endpoint}");
@@ -167,7 +167,7 @@ TEST_CASE_METHOD(PutS3ObjectTestsFixture, "Set non-default client configuration"
REQUIRE(mock_s3_request_sender_ptr->put_object_request.GetContentType() == "application/tar");
REQUIRE(mock_s3_request_sender_ptr->put_object_request.GetStorageClass() == Aws::S3::Model::StorageClass::REDUCED_REDUNDANCY);
REQUIRE(mock_s3_request_sender_ptr->put_object_request.GetServerSideEncryption() == Aws::S3::Model::ServerSideEncryption::AES256);
- REQUIRE(mock_s3_request_sender_ptr->getClientConfig().region == minifi::aws::processors::region::US_EAST_1);
+ REQUIRE(mock_s3_request_sender_ptr->getClientConfig().region == minifi::aws::processors::region::AP_SOUTHEAST_3);
REQUIRE(mock_s3_request_sender_ptr->getClientConfig().connectTimeoutMs == 10000);
REQUIRE(mock_s3_request_sender_ptr->getClientConfig().endpointOverride == "http://localhost:1234");
REQUIRE(mock_s3_request_sender_ptr->getPutObjectRequestBody() == INPUT_DATA);
diff --git a/minifi_main/CMakeLists.txt b/minifi_main/CMakeLists.txt
index beb2be852..95014e934 100644
--- a/minifi_main/CMakeLists.txt
+++ b/minifi_main/CMakeLists.txt
@@ -68,6 +68,9 @@ target_link_libraries(minifiexe spdlog libsodium gsl-lite ${LIBMINIFI})
set_target_properties(minifiexe PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
set_target_properties(minifiexe PROPERTIES OUTPUT_NAME minifi)
set_target_properties(minifiexe PROPERTIES ENABLE_EXPORTS True)
+if (WIN32)
+ target_compile_definitions(minifiexe PUBLIC SERVICE_NAME="Apache NiFi MINiFi")
+endif()
if (NOT WIN32)
add_custom_command(TARGET minifiexe POST_BUILD
diff --git a/thirdparty/aws-sdk-cpp/bundle-openssl.patch b/thirdparty/aws-sdk-cpp/bundle-openssl.patch
new file mode 100644
index 000000000..4262dbeb2
--- /dev/null
+++ b/thirdparty/aws-sdk-cpp/bundle-openssl.patch
@@ -0,0 +1,46 @@
+diff --git a/cmake/external_dependencies.cmake b/cmake/external_dependencies.cmake
+index 20feb6de51..aa63b4633c 100644
+--- a/cmake/external_dependencies.cmake
++++ b/cmake/external_dependencies.cmake
+@@ -34,14 +34,14 @@ elseif(ENABLE_OPENSSL_ENCRYPTION)
+ add_definitions(-DENABLE_OPENSSL_ENCRYPTION)
+ message(STATUS "Encryption: LibCrypto")
+
+- set(CRYPTO_TARGET_NAME "AWS::crypto")
++ set(CRYPTO_TARGET_NAME "OpenSSL::Crypto")
+ if(PLATFORM_ANDROID AND ANDROID_BUILD_OPENSSL)
+ set(BUILD_OPENSSL 1)
+ set(CRYPTO_TARGET_NAME "crypto")
+ set(USE_OPENSSL ON)
+ message(STATUS " Building Openssl as part of AWS SDK")
+ else()
+- find_package(crypto REQUIRED)
++ find_package(OpenSSL REQUIRED)
+ endif()
+ set(CRYPTO_LIBS ${CRYPTO_TARGET_NAME} ${ZLIB_LIBRARIES})
+ # ssl depends on libcrypto
+diff --git a/crt/aws-crt-cpp/crt/s2n/CMakeLists.txt b/crt/aws-crt-cpp/crt/s2n/CMakeLists.txt
+index f5ee8379..9dcfc7ab 100644
+--- a/crt/aws-crt-cpp/crt/s2n/CMakeLists.txt
++++ b/crt/aws-crt-cpp/crt/s2n/CMakeLists.txt
+@@ -116,7 +116,7 @@ else()
+ # supports it and set proper compiler flags to be added later to the
+ # Kyber compilation units.
+ if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(x86_64|amd64|AMD64)$")
+-
++
+ set(KYBER512R3_AVX2_BMI2_FLAGS "-mavx2 -mavx -mbmi2")
+ try_compile(KYBER512R3_AVX2_BMI2_SUPPORTED
+ ${CMAKE_BINARY_DIR}
+@@ -380,9 +380,9 @@ if (TARGET crypto)
+ message(STATUS "S2N found target: crypto")
+ set(LINK_LIB "crypto")
+ else()
+- find_package(crypto REQUIRED)
++ find_package(OpenSSL REQUIRED)
+ message(STATUS "Using libcrypto from the cmake path")
+- set(LINK_LIB "AWS::crypto")
++ set(LINK_LIB "OpenSSL::Crypto")
+ endif()
+
+ if (S2N_INTERN_LIBCRYPTO)
diff --git a/thirdparty/aws-sdk-cpp/c++20-compilation-fixes.patch b/thirdparty/aws-sdk-cpp/c++20-compilation-fixes.patch
index 8a8a5bc06..f13d28f61 100644
--- a/thirdparty/aws-sdk-cpp/c++20-compilation-fixes.patch
+++ b/thirdparty/aws-sdk-cpp/c++20-compilation-fixes.patch
@@ -1,26 +1,7 @@
-diff -ruN orig/aws-cpp-sdk-core/source/utils/crypto/bcrypt/CryptoImpl.cpp patched/aws-cpp-sdk-core/source/utils/crypto/bcrypt/CryptoImpl.cpp
---- orig/aws-cpp-sdk-core/source/utils/crypto/bcrypt/CryptoImpl.cpp 2021-08-03 20:29:03.231072140 +0200
-+++ patched/aws-cpp-sdk-core/source/utils/crypto/bcrypt/CryptoImpl.cpp 2021-08-03 20:30:21.510721218 +0200
-@@ -11,6 +11,7 @@
- #include <aws/core/utils/Outcome.h>
- #include <aws/core/utils/crypto/Hash.h>
- #include <aws/core/utils/HashingUtils.h>
-+#include <aws/core/utils/StringUtils.h>
- #include <atomic>
- #include <bcrypt.h>
- #include <winternl.h>
-@@ -126,7 +127,7 @@
- NTSTATUS status = BCryptOpenAlgorithmProvider(&m_algorithmHandle, algorithmName, MS_PRIMITIVE_PROVIDER, isHMAC ? BCRYPT_ALG_HANDLE_HMAC_FLAG : 0);
- if (!NT_SUCCESS(status))
- {
-- AWS_LOGSTREAM_ERROR(logTag, "Failed initializing BCryptOpenAlgorithmProvider for " << algorithmName);
-+ AWS_LOGSTREAM_ERROR(logTag, "Failed initializing BCryptOpenAlgorithmProvider for " << StringUtils::FromWString(algorithmName));
- return;
- }
-
-diff -ruN orig/crt/aws-crt-cpp/include/aws/crt/StringView.h patched/crt/aws-crt-cpp/include/aws/crt/StringView.h
---- orig/crt/aws-crt-cpp/include/aws/crt/StringView.h 2021-08-03 20:29:04.615065881 +0200
-+++ patched/crt/aws-crt-cpp/include/aws/crt/StringView.h 2021-08-03 20:30:38.030647928 +0200
+diff --git a/crt/aws-crt-cpp/include/aws/crt/StringView.h b/crt/aws-crt-cpp/include/aws/crt/StringView.h
+index a0fec83..6d0b997 100644
+--- a/crt/aws-crt-cpp/include/aws/crt/StringView.h
++++ b/crt/aws-crt-cpp/include/aws/crt/StringView.h
@@ -13,6 +13,7 @@
#include <iterator>
#include <limits>
diff --git a/thirdparty/aws-sdk-cpp/dll-export-injection.patch b/thirdparty/aws-sdk-cpp/dll-export-injection.patch
index b3304b0fd..8f8979d59 100644
--- a/thirdparty/aws-sdk-cpp/dll-export-injection.patch
+++ b/thirdparty/aws-sdk-cpp/dll-export-injection.patch
@@ -1,7 +1,8 @@
-diff -rupN aws-sdk-cpp-src/aws-cpp-sdk-core/CMakeLists.txt aws-sdk-cpp-src-patched/aws-cpp-sdk-core/CMakeLists.txt
---- aws-sdk-cpp-src/aws-cpp-sdk-core/CMakeLists.txt 2021-07-19 13:25:02.472816900 +0200
-+++ aws-sdk-cpp-src-patched/aws-cpp-sdk-core/CMakeLists.txt 2021-07-19 13:24:17.986828500 +0200
-@@ -507,6 +507,10 @@ if(USE_WINDOWS_DLL_SEMANTICS)
+diff --git a/aws-cpp-sdk-core/CMakeLists.txt b/aws-cpp-sdk-core/CMakeLists.txt
+index ab20cec848..d945c84000 100644
+--- a/aws-cpp-sdk-core/CMakeLists.txt
++++ b/aws-cpp-sdk-core/CMakeLists.txt
+@@ -550,6 +550,10 @@ if(USE_WINDOWS_DLL_SEMANTICS)
endif()
endif()
@@ -12,9 +13,10 @@ diff -rupN aws-sdk-cpp-src/aws-cpp-sdk-core/CMakeLists.txt aws-sdk-cpp-src-patch
set_compiler_flags(${PROJECT_NAME})
set_compiler_warnings(${PROJECT_NAME})
-diff -rupN aws-sdk-cpp-src/aws-cpp-sdk-core/include/aws/core/Core_EXPORTS.h aws-sdk-cpp-src-patched/aws-cpp-sdk-core/include/aws/core/Core_EXPORTS.h
---- aws-sdk-cpp-src/aws-cpp-sdk-core/include/aws/core/Core_EXPORTS.h 2021-07-19 13:25:02.473815700 +0200
-+++ aws-sdk-cpp-src-patched/aws-cpp-sdk-core/include/aws/core/Core_EXPORTS.h 2021-07-19 13:24:18.070776900 +0200
+diff --git a/aws-cpp-sdk-core/include/aws/core/Core_EXPORTS.h b/aws-cpp-sdk-core/include/aws/core/Core_EXPORTS.h
+index 1d3e312a60..74b111df96 100644
+--- a/aws-cpp-sdk-core/include/aws/core/Core_EXPORTS.h
++++ b/aws-cpp-sdk-core/include/aws/core/Core_EXPORTS.h
@@ -18,7 +18,7 @@
#else // AWS_CORE_EXPORTS
#define AWS_CORE_API __declspec(dllimport)
@@ -23,11 +25,12 @@ diff -rupN aws-sdk-cpp-src/aws-cpp-sdk-core/include/aws/core/Core_EXPORTS.h aws-
+ #elif !defined(AWS_CORE_API)
#define AWS_CORE_API
#endif // USE_IMPORT_EXPORT
- #else // defined (USE_WINDOWS_DLL_SEMANTICS) || defined (_WIN32)
-diff -rupN aws-sdk-cpp-src/aws-cpp-sdk-s3/CMakeLists.txt aws-sdk-cpp-src-patched/aws-cpp-sdk-s3/CMakeLists.txt
---- aws-sdk-cpp-src/aws-cpp-sdk-s3/CMakeLists.txt 2021-07-19 13:25:02.474814900 +0200
-+++ aws-sdk-cpp-src-patched/aws-cpp-sdk-s3/CMakeLists.txt 2021-07-19 13:23:53.913102900 +0200
-@@ -59,6 +59,10 @@ if(USE_WINDOWS_DLL_SEMANTICS AND BUILD_S
+ #define AWS_CORE_LOCAL
+diff --git a/aws-cpp-sdk-s3/CMakeLists.txt b/aws-cpp-sdk-s3/CMakeLists.txt
+index f44ba56642..ee40d8bf44 100644
+--- a/aws-cpp-sdk-s3/CMakeLists.txt
++++ b/aws-cpp-sdk-s3/CMakeLists.txt
+@@ -59,6 +59,10 @@ if(USE_WINDOWS_DLL_SEMANTICS AND BUILD_SHARED_LIBS)
target_compile_definitions(${PROJECT_NAME} PRIVATE "AWS_S3_EXPORTS")
endif()
@@ -38,9 +41,10 @@ diff -rupN aws-sdk-cpp-src/aws-cpp-sdk-s3/CMakeLists.txt aws-sdk-cpp-src-patched
target_include_directories(${PROJECT_NAME} PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>)
-diff -rupN aws-sdk-cpp-src/aws-cpp-sdk-s3/include/aws/s3/S3_EXPORTS.h aws-sdk-cpp-src-patched/aws-cpp-sdk-s3/include/aws/s3/S3_EXPORTS.h
---- aws-sdk-cpp-src/aws-cpp-sdk-s3/include/aws/s3/S3_EXPORTS.h 2021-07-19 13:25:02.475814200 +0200
-+++ aws-sdk-cpp-src-patched/aws-cpp-sdk-s3/include/aws/s3/S3_EXPORTS.h 2021-07-19 13:23:53.918099900 +0200
+diff --git a/aws-cpp-sdk-s3/include/aws/s3/S3_EXPORTS.h b/aws-cpp-sdk-s3/include/aws/s3/S3_EXPORTS.h
+index b520ae4341..7d325214bc 100644
+--- a/aws-cpp-sdk-s3/include/aws/s3/S3_EXPORTS.h
++++ b/aws-cpp-sdk-s3/include/aws/s3/S3_EXPORTS.h
@@ -21,7 +21,7 @@
#else
#define AWS_S3_API __declspec(dllimport)
diff --git a/thirdparty/aws-sdk-cpp/shutdown-fix.patch b/thirdparty/aws-sdk-cpp/shutdown-fix.patch
index e8bafa585..90ccc400c 100644
--- a/thirdparty/aws-sdk-cpp/shutdown-fix.patch
+++ b/thirdparty/aws-sdk-cpp/shutdown-fix.patch
@@ -1,7 +1,8 @@
-diff -rupN aws-sdk-cpp-src/crt/aws-crt-cpp/crt/aws-c-io/source/event_loop.c aws-sdk-cpp-src-patched/crt/aws-crt-cpp/crt/aws-c-io/source/event_loop.c
---- aws-sdk-cpp-src/crt/aws-crt-cpp/crt/aws-c-io/source/event_loop.c 2021-08-09 08:48:51.141882100 +0200
-+++ aws-sdk-cpp-src-patched/crt/aws-crt-cpp/crt/aws-c-io/source/event_loop.c 2021-08-09 08:48:08.231072500 +0200
-@@ -114,7 +114,7 @@ static struct aws_event_loop_group *s_ev
+diff --git a/crt/aws-crt-cpp/crt/aws-c-io/source/event_loop.c b/crt/aws-crt-cpp/crt/aws-c-io/source/event_loop.c
+index c37aaf6..2a45c21 100644
+--- a/crt/aws-crt-cpp/crt/aws-c-io/source/event_loop.c
++++ b/crt/aws-crt-cpp/crt/aws-c-io/source/event_loop.c
+@@ -114,7 +114,7 @@ static struct aws_event_loop_group *s_event_loop_group_new(
el_group->allocator = alloc;
aws_ref_count_init(