[[breaking_60_plugins_changes]]
=== Plugins changes

==== Mapper attachments plugin

* The mapper attachments plugin has been deprecated in elasticsearch 5.0 and is now removed.
You can use {plugins}/ingest-attachment.html[ingest attachment plugin] instead.

==== S3 Repository plugin

* The bucket an s3 repository is configured with will no longer be created automatically.
It must exist before the s3 repository is created.

* Support for specifying s3 credentials through environment variables and
system properties has been removed. Use the `elasticsearch-keystore` tool
to securely store the credentials.

* Specifying region has been removed. This includes the settings `cloud.aws.region`,
`cloud.aws.s3.region`, `repositories.s3.region`, and specifying
region inside the repository settings. Instead, specify the full endpoint if a custom
s3 location is needed, or rely on the default behavior which automatically locates
the region of the configured bucket.

* Specifying s3 signer type has been removed, including `cloud.aws.signer` and `cloud.aws.s3.signer`.

* Global repositories settings have been removed. This includes `repositories.s3.bucket`,
`repositories.s3.server_side_encryption`, `repositories.s3.buffer_size`,
`repositories.s3.max_retries`, `repositories.s3.use_throttle_retries`,
`repositories.s3.chunk_size`, `repositories.s3.compress`, `repositories.s3.storage_class`,
`repositories.s3.canned_acl`, `repositories.s3.base_path`, and 
`repositories.s3.path_style_access`. Instead, these settings should be set directly in the
 settings per repository.
 See {plugins}/repository-s3-repository.html[S3 Repository settings].

* Shared client settings have been removed. This includes  `cloud.aws.access_key`,
 `cloud.aws.secret_key`, `cloud.aws.protocol`, `cloud.aws.proxy.host`,
 `cloud.aws.proxy.port`, `cloud.aws.proxy.username`, `cloud.aws.proxy.password`,
 `cloud.aws.signer`, `cloud.aws.read_timeout`, `cloud.aws.s3.access_key`,
 `cloud.aws.s3.secret_key`, `cloud.aws.s3.protocol`, `cloud.aws.s3.proxy.host`,
 `cloud.aws.s3.proxy.port`, `cloud.aws.s3.proxy.username`, `cloud.aws.s3.proxy.password`,
 `cloud.aws.s3.signer`, `cloud.aws.s3.read_timeout`, `repositories.s3.access_key`,
 `repositories.s3.secret_key`, `repositories.s3.endpoint` and `repositories.s3.protocol`.
Instead, use the new named client settings under `s3.client.CLIENT_NAME.*`.

==== Azure Repository plugin

* The container an azure repository is configured with will no longer be created automatically.
It must exist before the azure repository is created.

* Global repositories settings you are able to set in elasticsearch config file under `repositories.azure`
name space have been removed. This includes `repositories.azure.account`, `repositories.azure.container`,
`repositories.azure.base_path`, `repositories.azure.location_mode`, `repositories.azure.chunk_size` and
`repositories.azure.compress`.
You must set those settings per repository instead. Respectively `account`, `container`, `base_path`,
`location_mode`, `chunk_size` and `compress`.
See {plugins}/repository-azure-usage.html#repository-azure-repository-settings[Azure Repository settings].

==== GCS Repository plugin

* The `service_account` setting has been removed. A service account json credential file must now be
specified in the <<secure-settings, elasticsearch keystore>>.

==== EC2 Discovery plugin

* Specifying ec2 signer type has been removed, including `cloud.aws.signer` and `cloud.aws.ec2.signer`.

* The region setting has been removed. This includes the settings `cloud.aws.region`
and `cloud.aws.ec2.region`. Instead, specify the full endpoint.

* All `cloud.aws.*` and `cloud.aws.ec2.*` settings have been removed. Use `discovery.ec2.*` settings instead.

==== Ignoring hidden folders

Previous versions of Elasticsearch would skip hidden files and directories when
scanning the plugins folder. This leniency has been removed.

==== ICU Analysis plugin

The icu4j library has been upgraded to 59.1,
Indices created in the previous major version will need to be reindexed
in order to return correct (and correctly ordered) results,
and to take advantage of new characters.

==== Plugins should not construct `Environment` instances from `Settings`

Previously, plugins could construct an `Environment` instance from `Settings` to
discover the path to plugin-specific config files. This will no longer work in
all situations as the `Settings` object does not carry the necessary information
for the config path to be set correctly. Instead, plugins that need to know the
config path should have a single constructor that accepts a pair of `Settings`
and `Path` instances, and construct an `Environment` using the corresponding
constructor on `Environment`.
