__S3 integration__\\
\\
Allows you to use a S3 bucket as the backend filesystem. However, since S3 isn't hierarchical, you only get simulated folders, and no ability to rename, and some other gotchas about how S3 works. These aren't limitations we impose, but just due to the design decisions S3 made in that it's intended for static item consumption and not as a location for holding and manipulating file names. \\
\\
!1. Configuration.\\
\\
The URL should look like this (Replace the URL with your corresponding data!):\\
\\
{{{
s3://ACCESS_KEY_ID:SEECRET_ACCESS_KEY@SERVER/BUCKET/}}}
\\
The security credentials (Access key ID and Secret Access Key) were offered to save at S3 user creation. The server and bucket information can be found on the S3 portal (at AWS site S3 -> Buckets).\\
\\
[attachments|S3_bucket_info.png]\\
\\
Then paste them on the appropriate fields in CrushFTP.\\
\\
[attachments|S3_VFS_config.png]\\
We support the IAM auth scenario too, its just not the default mode. Setting the S3 username to "iam_lookup" and S3 password to "lookup" will use this method.\\
\\
The following policy permissions are needed on S3:\\
{{{
"s3:GetBucketLocation",
"s3:ListAllMyBuckets",
"s3:ListBucket",
"s3:ListBucketMultipartUploads",
"s3:PutObject",
"s3:AbortMultipartUpload",
"s3:ListMultipartUploadParts",
"s3:DeleteObject",
"s3:GetObject",
"s3:GetObjectAttributes"
}}}\\
\\
!2. Access other cloud storage through S3 REST API\\
\\
Google Cloud - [Google Cloud Storage Integration] \\
BackBlaze(b2) - [BackBlaze(b2) integration]\\
\\
!3. Assume Role access\\
\\
You can use IAM roles to delegate access to your AWS resources. With IAM roles, you can establish trust relationships between your trusting account and other AWS trusted accounts. (for more info see: [https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html], and [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html])\\
\\
Create the assume role at __Identity and Access Management (IAM)__:\\
\\
[attachments|create_assume_role.png]\\
\\
[attachments|assume_role_entity_type.png]\\
\\
[attachments|assume_role_s3_access.png]\\
\\
[attachments|assume_create_role_final_check.png]\\
\\
Add permission policy to the specified user. This policy will use the above-created assume role.\\
\\  
[attachments|assume_role_user_permission_policy.png]\\
\\
{{{
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::XXXXX:role/AssumeRoleS3"
        }
    ]
}
}}}\\
\\
Use the specified user's Access key and Secret along with the Assume Role ARN to obtain S3 access.\\
\\
[attachments|assume_role_vfs_settings.png]\\
\\