SIGNING_REGION:NoSuchFieldError について

# 発生したエラー
Maven build で生成した jar を S3 に配置し、Lambdaファンクションの実行ソースとしていました。
各ファンクション用クラスはStepFunctionsのステートマシンに定義として記載し、さらにステートマシンをCloudWatchEvent経由で呼び出す構成でした。
各クラスは RequestHandler を実装していたのですが、その中でも **S3を参照する処理**のみ、タイトル通りのエラーが発生しました。

```java
java.lang.NoSuchFieldError: SIGNING_REGION
        at com.amazonaws.services.s3.AmazonS3Client.createRequest(AmazonS3Client.java:4660)
        at com.amazonaws.services.s3.AmazonS3Client.createRequest(AmazonS3Client.java:4636)
        at com.amazonaws.services.s3.AmazonS3Client.getObject(AmazonS3Client.java:1433)
        at com.sompo_swt.integraph.common.S3StorageManager.getS3Object(S3StorageManager.java:58)
        <中略>
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
```
## 調査時
S3へのアクセスに関するソースでは、認証情報とリージョンをそれぞれ以下のように設定していました。

```java:S3へのアクセスに関する実装部分
S3StorageManager() {
	client = AmazonS3ClientBuilder
		.standard()
		.withRegion(Regions.AP_NORTHEAST_1)
		.withCredentials(new AWSStaticCredentialsProvider(getCredentials()))
		.build();
}
private AWSCredentials getCredentials() {
	return new BasicAWSCredentials(
		rb.getString("accessKey")
		, rb.getString("secretKey"));
}
```

リージョン情報は定数、アクセスキーとシークレットキーはプロパティファイルに書き出して管理しています。

試しに`.withRegion(Regions.AP_NORTHEAST_1)`部分をコメントアウトしましたが、解消せず。。。
お手上げ状態でした。

## 対応方法
**NoSuchFieldError: SIGNING_REGION** について調べたところ、どうやらこのエラーは
「**バージョンの異なるSDKコアが混在していること**」が原因で発生する、とのこと。

今回の場合は、該当のLambdaファンクションをステートマシン経由で実行した際に参照する **aws-java-sdk-core** のバージョンがCloudWatchイベント経由での呼び出し時に参照するバージョンと異なっていたことが原因（？）だと考えました。

pom.xml を参照すると、それらしい部分のバージョンが想定通り古いものになっていたため、
当該部分の **aws-java-sdk-core** のバージョンをpom.xml 内の最新のバージョンに合わせると、無事にS3へアクセスできるようになりました。

<img width="410" alt="qiita_20190619.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265621/dca8c091-d749-a46a-07d6-0ea8e76ad072.png">

`.withRegion(Regions.AP_NORTHEAST_1)` が悪さをして発生するパターンもあるようですが、今回はsdk-coreの異なるバージョンが混在していたことが原因でした。

pom.xml は以下のように修正しました。

```xml:修正前
<dependency>                                             
  <groupId>com.amazonaws</groupId>                       
  <artifactId>aws-java-sdk-stepfunctions</artifactId>    
  <version>1.11.274</version>                            
</dependency>                                            
```

```xml:修正後
<dependency>                                             
  <groupId>com.amazonaws</groupId>                       
  <artifactId>aws-java-sdk-stepfunctions</artifactId>    
  <version>1.11.572</version>                            
</dependency>                                            
```

(※スクリーンショット取得時には大半が 1.11.574 にアップデートされていますが、修正後の 1.11.572 というバージョンは修正時の最新バージョンです)

今回の事象に関しては、あたりをつけて行った対処法がヒットしてしまったので、理解が曖昧なままです。。。

異なるバージョンのSDKが混在している場合の Java on Lambda について、類似の問題が発生した方や
より詳細を理解しておられる方がいましたら、なぜこの事象が発生するのかなど、コメントお願いします。m(_ _)m

### 参考

[【超初心者向け】Maven超入門](https://qiita.com/tarosa0001/items/e5667cfa857529900216)
[SDK for Java 1.11.x と 2.x の相違点](https://docs.aws.amazon.com/ja_jp/sdk-for-java/v2/migration-guide/whats-different.html)