awslabs/aws-sdk-rust

The AWS SDK for Rust

Please Note: The SDK is currently released as an alpha and is intended strictly for feedback purposes only

This repo contains the new AWS SDK for Rust and its public roadmap

. Do not use this SDK for production workloads.

This SDK for Rust is code generated from Smithy models that represent each AWS service. Code used to generate the SDK can be found in smithy-rs.

Getting Started with the SDK

The new AWS SDK for Rust is built with one crate per AWS service. Tokio must also be added as a dependency within your Rust project to execute asynchronous code. During the alpha, the SDK will not be pushed to crates.io and must be used via a Git dependency.

  1. Create a new Rust project: cargo new sdk-example
  2. Within your Cargo.toml file, add dependencies for DynamoDB and Tokio:
[dependencies]
dynamodb = { git = "https://github.com/awslabs/aws-sdk-rust", tag = "v0.0.14-alpha", package = "aws-sdk-dynamodb" }
tokio = { version = "1", features = ["full"] }
  1. Provide your AWS credentials as environment variables:

Note: The alpha SDK only supports environment variable credential providers at this time.

Linux/MacOS

export AWS_ACCESS_KEY_ID=...
export AWS_SECRET_ACCESS_KEY=...
export AWS_REGION=... # eg. us-east-1

Windows

set AWS_ACCESS_KEY_ID=...
set AWS_SECRET_ACCESS_KEY=...
set AWS_REGION=... # eg. us-east-1
  1. Make a request using DynamoDB

#[tokio::main]
async fn main() -> Result<(), dynamodb::Error> {
    let client = dynamodb::Client::from_env();
    let req = client.list_tables().limit(10);
    let resp = req.send().await?;
    println!("Current DynamoDB tables: {:?}", resp.table_names);
    Ok(())
}

Prerequisites

In order to use the SDK for Rust, you must already have Rust and Cargo installed. If you don't, these instructions will show you how to install Rust and Cargo: https://doc.rust-lang.org/book/ch01-01-installation.html

Getting Help

  • GitHub discussions - For ideas, RFCs & general questions
  • GitHub issues โ€“ For bug reports & feature requests
  • Generated Docs (latest version)
  • Usage examples

Feedback and Contributing

Feedback

The alpha SDK uses GitHub Issues to track feature requests and issues with the SDK. In addition, we use GitHub Projects to provide users with a high level view of our roadmap and the features we're actively working on.

You can provide feedback or report a bug by submitting a GitHub issue. This is the preferred mechanism to give feedback so that other users can engage in the conversation, +1 issues, etc. Issues you open will be evaluated for our roadmap in the Developer Preview launch.

Contributing

If you are interested in contributing to the new AWS SDK for Rust, please take a look at CONTRIBUTING

AWS Services Supported

This alpha SDK currently does not provide support for every AWS service. You can see all the services currently supported on AWS_SERVICES_SUPPORTED

Supported Rust Versions (MSRV)

The SDK currently requires a minimum of Rust 1.52.1, and is not guaranteed to build on compiler versions earlier than that. While we are still in alpha, we will be keeping the minimum compiler version two releases behind the latest stable release where possible (so if the latest stable is 1.55, we will be on 1.53). However, we are not making any guarantees around this at present. Increases in minimum required Rust version will be called out in the Release Notes for new releases of the SDK.

Additional Resources

  • Design docs - Design documentation for the SDK lives in the design folder of smithy-rs.
  • Runtime / Handwritten code: The Rust Runtime code that underpins the SDK can be accessed here and here. This code is copied into this repo as part of code generation.
  • Code Examples
  • API reference documentation (rustdoc)

Security

See CONTRIBUTING for more information.

License

This project is licensed under the Apache-2.0 License.

Issues

Collection of the latest Issues

NichoBrando

NichoBrando

documentation
Comment Icon1

Describe the issue

Hello, how are you? Good evening! ๐Ÿ˜„

I found a small mistake when I was reading the README.md for DynamoDB. There's a link that points to a wrong link for this tutorial: Create, read, update, delete table. It should points to https://github.com/awslabs/aws-sdk-rust/blob/main/examples/dynamodb/src/bin/crud.rs .

Links

https://github.com/awslabs/aws-sdk-rust/tree/main/examples/dynamodb

https://github.com/awslabs/aws-sdk-rust/blob/main/examples/dynamodb/src/bin/crud.rs

matthewmturner

matthewmturner

feature-request
Comment Icon3

Describe the feature

I would like an API for connecting to a Glue metastore.

Use Case

I am working on datafusion and we recently enabled querying data on s3 with aws-sdk-rust. As a next step we are looking to connect to a Glue Catalog as a metastore (more details here).

Proposed Solution

No response

Other Information

I didnt see Glue mentioned anywhere in any issues or on the Roadmap - so I presume it will be some time before it would be available but I wanted to get the request in anyway to gauge community interest and hopefully get it added to backlog.

Acknowledgements

  • I may be able to implement this feature request
  • This feature might incur a breaking change

A note for the community

Community Note

  • Please vote on this issue by adding a ๐Ÿ‘ reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue, please leave a comment
jdisanti

jdisanti

feature-request
Comment Icon0

Describe the feature

From discussion https://github.com/awslabs/smithy-rs/discussions/1309

Customers should be able to set every field on the AssumeRole input without code changes to expose those fields so that if STS adds new fields to the operation, they're immediately accessible after the STS model is updated.

Use Case

A new field is added to AssumeRole and I want to use it when directly constructing an AssumeRoleProvider.

Proposed Solution

Expose the AssumeRoleInput in the AssumeRoleProviderBuilder.

Other Information

No response

Acknowledgements

  • I may be able to implement this feature request
  • This feature might incur a breaking change

A note for the community

Community Note

  • Please vote on this issue by adding a ๐Ÿ‘ reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue, please leave a comment
jmklix

jmklix

feature-request
Comment Icon0

Community Note

  • Please vote on this issue by adding a ๐Ÿ‘ reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue, please leave a comment

Discussed in https://github.com/awslabs/aws-sdk-rust/discussions/80

Originally posted by rcoh May 13, 2021 In some cases, dealing with an async API is an unnecessary hassle. This discussion is a place to discuss the customer requirements for a sync API as well as general design considerations (eg. separate cargo feature, how does this work with streaming data, etc.)

josb

josb

bug
Comment Icon1

What is the problem?

Per https://docs.rs/aws-sdk-s3/latest/aws_sdk_s3/error/enum.GetObjectErrorKind.html, enum aws_sdk_s3::error::GetObjectErrorKind doesn't include NoSuchBucket. However, the aws-cli call aws s3api get-object --bucket NoSuchBucket --key file.txt /dev/null produces An error occurred (NoSuchBucket) when calling the GetObject operation: The specified bucket does not exist.

Version

aws-sdk-s3 v0.9.0

Platform

Darwin localhost Darwin Kernel Version 21.4.0: Fri Mar 18 00:45:05 PDT 2022; root:xnu-8020.101.4~15/RELEASE_X86_64 x86_64

AWS Services

S3

Description

I would expect aws_sdk_s3::error::GetObjectErrorKind (and possibly other Kinds) to include the NoSuchBucket variant.

Logs

No response

bryanburgers

bryanburgers

feature-request
Comment Icon2

A note for the community

Community Note

  • Please vote on this issue by adding a ๐Ÿ‘ reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue, please leave a comment

Tell us about your request

Currently aws_sdk_dynamodb::model::AttributeValue and aws_sdk_dynamodbstreams::model::AttributeValue are distinct types, even though they are identical.

The definition for these two hasn't changed since aws-sdk v0.0.23-alpha.

Tell us about the problem you're trying to solve.

The ecosystem currently has at least 5 different definitions of AttributeValue.

That number is much larger if you consider that rustc considers each version to be a different type (e.g. aws_sdk_dynamodb::model::AttributeValue from aws_sdk_dynamodb version 0.9 is distinct from aws_sdk_dynamodb::model::AttributeValue from aws_sdk_dynamodb version 0.8).

I believe it would be hugely beneficial for the community if there were one definition of AttributeValue in a standalone stable (1.0) crate, so that every crate that works with attribute values could depend on it and use AttributeValues interoperably.

To avoid a https://xkcd.com/927/ situation, I haven't created a standalone crate for this. I'm impartial about who maintains it. It seems most reasonable to me that the aws-sdk-rust team would own it. But I would also be happy to extract the aws-sdk-rust code into a separate crate and maintain it if aws_sdk_dynamodb would use it.

Are you currently working around this issue?

I maintain serde_dynamo, the library for converting complex AttributeValues into structured data.

We work around this issue by creating feature flags to support every different version of AttributeValue. See https://docs.rs/serde_dynamo/latest/serde_dynamo/#features for more information on the approach.

Right now, we have to track all 5 crates and make a new release, with new feature flags, every time one of them updates.

We use macros to derive the various implementations because, although aws_sdk 0.8's AttributeValue and aws_sdk 0.9's AttributeValue (for example) are exactly the same, they are distinct according to the compiler, so we need separate implementations.

If there were a standalone stable 1.0 crate that contained the definition of AttributeValue, then serde_dynamo would have only one implementation, no need for feature flags, and no need for the implementation macros. And more importantly, support wouldn't need to be added to serde_dynamo after a new release of aws_sdk (a task that isn't hard or all that time consuming from a technical perspective, but still a chore that needs to get done and doesn't always get done immediately).

Users of serde_dynamo would benefit significantly because 1/ support for the new version of aws_sdk would be available the second that aws_sdk has a new version, and 2/ they wouldn't have to bump a feature flag every time they bumped their version of aws_sdk.

Additional context

If the aws-sdk-rust team is interested in this proposal, I will also try to work with the aws lambda events team for the benefit of the community.

I will also work with the rusoto team, but as rusoto is in maintenance mode, I could understand them not adopting.

I'd be willing to submit a PR to make this happen if requested.

overheat

overheat

feature-request
Comment Icon1

A note for the community

Community Note

  • Please vote on this issue by adding a ๐Ÿ‘ reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue, please leave a comment

Tell us about your request

Add Kinesis Video example.

Tell us about the problem you're trying to solve.

Put video to cloud, then playback in web with HLS.

Are you currently working around this issue?

No.

Additional context

reference code

ojacobson

ojacobson

feature-request
Comment Icon2

A note for the community

Community Note

  • Please vote on this issue by adding a ๐Ÿ‘ reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue, please leave a comment

Tell us about your request

The new pagination support is great, and I'd like to use it in more places. Please add support to it to the ListResourceRecordSets API client method.

Tell us about the problem you're trying to solve.

I want to be able to iterate over multiple pages of resource record sets in a hosted zone reliably.

Are you currently working around this issue?

My existing code uses a loop and maintains its own pagination:

Additional context

No response

ALRBP

ALRBP

feature-request
Comment Icon1

Community Note

  • Please vote on this issue by adding a ๐Ÿ‘ reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue, please leave a comment

Prerequisites

Question Description

I am currently developing a program that will (among various things) upload large files to S3.

I found how to perform normal uploads directly from files (without having to load them in RAM) in the doc, but I have an issue with multipart uploads (required for larger files).

If I understand things correctly, Client.put_object() will not perform a multipart upload and, unlike for other languages, the SDK does not provide a high-level API to do them automatically, you have to do them manually using Client.create_multipart_upload(), Client.upload_part() and Client.complete_multipart_upload().

The issue is that, while when performing a normal upload, I can just do .body(ByteStream::from_path("some/path"), it does not seem possible to do the same with a multipart upload. Since .body() must be called for each part, creating a new ByteStream from a path each time won't work (only the beginning of the file will be read) and I did not find a proper way to seek in a ByteStream (except reading individual bytes in a loop, which would lead to useless IO). The .take() function of the trait StreamExt sounds interesting, but its result is not usable as parameter for .body(), and simple trying to pass the same ByteStream at each iteration will not work, as the Rust compiler consider, likely for good reasons, that the ByteStream is "moved" when passing it to .body() (not to mention the fact that the function may not even know when to stop reading, since it is not clear for me whether .content_length() has an effect on stream reading). The only workaround I can imagine is to read the whole part from the file to RAM and use ByteStream::from(), but this is definitely not a proper way to perform an upload from a file.

So, did I miss something? Is there a proper way to perform a multipart upload reading data directly from a file, is there an issue with the API or is this a feature left for a future version?

I am not very experienced with Rust, and I am discovering the AWS SDK as well as the 3rd party libraries it relies on, so maybe it's just me who do not understand how to do things properly, but in that case, I would appreciate some help, in the other case, I hope this SDK could be improved to allow multipart uploads directly from a file.

Platform/OS/Device

GNU/Linux (amd64)

Language Version

Rust 1.59.0

robertsarkozi

robertsarkozi

bug
Comment Icon6

Prerequisites

Question Description

I have the following piece of code, trying to get the time series/data streams information for one of my Assets in AWS IoT SiteWise:

The code seems to fail with the following error message in the ...client.list_time_series()...send().await? line, when I do cargo run:

It doesn't reach the for loop, I get the same error if I execute without the loop. client.list_asset_models() and client.list_assets() methods work.

Cargo.toml contains:

Using AWS CLI version 2.4.27 works: aws iotsitewise list-time-series --asset-id 7982cee4-affa-4488-9c92-e6210ef2065e:

Any help is appreciated. NOTE: I'm new to Rust.

Platform/OS/Device

arch linux/x86_64

Language Version

rust 1.59; edition = '2021'

overheat

overheat

feature-request
Comment Icon2

A note for the community

Community Note

  • Please vote on this issue by adding a ๐Ÿ‘ reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue, please leave a comment

Tell us about your request

Migrate to Rust 2021 edition. Looks lots of examples works under 2021 edition now.

Tell us about the problem you're trying to solve.

modernize.

Are you currently working around this issue?

Yes.

Additional context

No response

rcoh

rcoh

feature-request
Comment Icon0

A note for the community

Community Note

  • Please vote on this issue by adding a ๐Ÿ‘ reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue, please leave a comment

Tell us about your request

All S3 requests should be presignableโ€”this is the behavior of the Ruby SDK.

Tell us about the problem you're trying to solve.

Make a request to S3 from a context where the credentials are not directly available

Are you currently working around this issue?

routing requests through the server

Additional context

No response

awsa2ron

awsa2ron

feature-request
Comment Icon0

A note for the community

Community Note

  • Please vote on this issue by adding a ๐Ÿ‘ reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue, please leave a comment

Tell us about your request

Add request temporary credentials by x.509 and certificate and iot role alias. refer to this blog.

Thanks.

Tell us about the problem you're trying to solve.

Request temporary credentials by x.509 and certificate and iot role alias.

Are you currently working around this issue?

yes

Additional context

No response

awsa2ron

awsa2ron

documentation
Comment Icon0

A note for the community

Community Note

  • Please vote on this issue by adding a ๐Ÿ‘ reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue, please leave a comment

Tell us about your request

Add Greengrass V2 example, as well as Greengrass V1 (classic). Like list-core-devices. Thanks.

Tell us about the problem you're trying to solve.

Greengrass V2 example

Are you currently working around this issue?

Yes

Additional context

No response

TbirdDuncan

TbirdDuncan

feature-request
Comment Icon4

A note for the community

Community Note

  • Please vote on this issue by adding a ๐Ÿ‘ reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue, please leave a comment

Tell us about your request

Without a way to check on object uploads, a user's experience is severely hindered. Here's an already implemented api for the javascript sdk, https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3/ManagedUpload.html

Tell us about the problem you're trying to solve.

If someone tries to upload something there is currently no rust viable way to tell the user where they are in the request process.

Are you currently working around this issue?

Just presenting them with a loading dial.

Additional context

No response

simonvandel

simonvandel

feature-request
Comment Icon1

A note for the community

Community Note

  • Please vote on this issue by adding a ๐Ÿ‘ reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue, please leave a comment

Tell us about your request

  • Implement From for AttributeValue for common types
    • Blob -> AttributeValue::B
    • bool -> AttributeValue::Bool
    • Vec -> AttributeValue::Bs
    • Vec -> AttributeValue::L
    • HashMap<String, AttributeValue>, AttributeValue::M
    • all number types -> AttributeValue::N
    • Vec -> AttributeValue::Ns
    • String -> AttributeValue::S
    • Vec -> AttributeValue::SS
    • (I left out AttributeValue::Null since that would conflict with AttributeValue::Bool)
  • Let all methods that currently take AttributeValue instead take Into<AttributeValue>

That will allow methods such as expression_attribute_values to be used like this

instead of the current

Tell us about the problem you're trying to solve.

Make constructing AttributeValues more ergonomic.

Are you currently working around this issue?

Converting to AttributeValue manually.

Additional context

No response

jbg

jbg

feature-request
Comment Icon2

A note for the community

Community Note

  • Please vote on this issue by adding a ๐Ÿ‘ reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue, please leave a comment

Tell us about your request

The ability to set the DurationSeconds field of the sts:AssumeRole request that AssumeRoleProvider makes behind the scenes.

Tell us about the problem you're trying to solve.

We're using an assumed role to presign s3:GetObject URLs, and we want to be able to control the length of time the URLs are valid for. Presigned URLs produced using temporary credentials are valid for the lesser of the signature validity period and the credential validity period, so using AssumeRoleProvider we can't produce any URLs that are valid for longer than 3600 seconds (the default validity period for sts:AssumeRole).

Are you currently working around this issue?

We can manually call sts:AssumeRole using aws-sdk-sts and then produce the signed URLs using aws-sig-auth, but it's not nearly as ergonomic.

Additional context

No response

MathiasKoch

MathiasKoch

feature-request
Comment Icon9

A note for the community

Community Note

  • Please vote on this issue by adding a ๐Ÿ‘ reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue, please leave a comment

Tell us about your request

I would like support for omit_session_token here: https://github.com/awslabs/smithy-rs/blob/ab0306b2a178ccd236b217c06de684172b667f70/aws/rust-runtime/aws-sig-auth/src/signer.rs#L88-L96 and here: https://github.com/awslabs/aws-sdk-rust/blob/63fc7ab18c9fdd7b6f981d5d1bf223ced0225e05/sdk/aws-sig-auth/src/signer.rs#L88-L96

And obviously in the underlying implementation in aws-sigv4

Tell us about the problem you're trying to solve.

It is currently not possible to create a presigned SigV4 request for certain services, due to the fact that they need to exclude the X-Amz-Security-Token from the query string used for calculating the signature.

As per the documentation note here: http://docs.aws.amazon.com/general/latest/gr/sigv4-add-signature-to-request.html.

When you add the X-Amz-Security-Token parameter to the query string, some services require that you include this parameter in the canonical (signed) request. For other services, you add this parameter at the end, after you calculate the signature. For details, see the API reference documentation for that service.

The only service i have yet to encounter is iotdevicegateway, but judging from AWS's documentation note it appears as if there could be more.

Are you currently working around this issue?

We are currently using a patched version of rusoto for this, which is the last thing blocking us from migrating fully to aws-sdk-rust

Additional context

This was also part of the original feature request for AWS IoT in https://github.com/awslabs/aws-sdk-rust/issues/115, but seems to have been missed.

ymwjbxxq

ymwjbxxq

feature-request
Comment Icon3

What is the problem?

Hello all,

I am trying to use DAX, and I have the following problems.

I try to connect in this way.

Lambda Env Variables: DAX_ENDPOINT: DAX_DOMAIN:8111

I get this error:

If I add the schema and I tried:

  • dax://
  • http://
  • https://

I get time out:

I have tried this Node example: https://github.com/aws-samples/amazon-dax-lambda-nodejs-sample/blob/master/template.yaml

My Rust Lambda is in the same security group and subnets of the example run in Node.

If you need more, please let me know.

Dan

Version

v0.8.0

Platform

Lambda arm64

AWS Services

No response

Description

No response

Logs

No response

stefanhoelzl

stefanhoelzl

feature-request
Comment Icon0

A note for the community

Community Note

  • Please vote on this issue by adding a ๐Ÿ‘ reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue, please leave a comment

Tell us about your request

I would like to be able to pre-signed a URL for a ListObjectsV2 command, with a pre-signed prefix.

Tell us about the problem you're trying to solve.

I want to be able to send out pre-signed links where the receiver of the link can perform a ListObjectsV2 command with a pre-defined prefix. The receiver must be able to use the pre-signed URL multiple times in case of pagination.

Are you currently working around this issue?

List operations are currently routed through my backend, so my backend performs the List operations and send the result back to the user.

Additional context

No response

jdisanti

jdisanti

documentation
Comment Icon10

A note for the community

Community Note

  • Please vote on this issue by adding a ๐Ÿ‘ reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue, please leave a comment

Tell us about your request

Tell us about the problem you're trying to solve.

N/A

Are you currently working around this issue?

N/A

Additional context

No response

ZelCloud

ZelCloud

feature-request
Comment Icon1

A note for the community

Community Note

  • Please vote on this issue by adding a ๐Ÿ‘ reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue, please leave a comment

Tell us about your request

I'd like for the s3 package to also include a way to get the total size for a folder (directory).

Something similar to

or from boto3

ex. bucket_name/folder - 4Gb (total size including subdirectories)

Tell us about the problem you're trying to solve.

We have limits on how much data can be uploaded to a folder so knowing the total size and by extension being able to show it to the user is important. Another issue is if the size of the folder is really high (ex. 100Gb) we'd like to prevent the user from downloading everything in one shot vs a folder of 30mb and a few dozen files.

Are you currently working around this issue?

Still in the process of migrating some services to rust and by extension aws-sdk-rust, so not working around it but it is blocking us from moving over fully.

Additional context

No response

rcoh

rcoh

Comment Icon0

Discussed in https://github.com/awslabs/aws-sdk-rust/discussions/451

Originally posted by Chandrian February 16, 2022 Hello,

Wondering if there's a way to decompress the content using GetObject if the content-encoding is set to GZIP? Basically, thinking of how reqwest works.

Right now I'm using flate2, but having issues as it errors out with a corrupt data error, but matching on it I actually get the right output.. not clean so looking for something better.

Thanks for any insight.

coord-e

coord-e

feature-request
Comment Icon1

A note for the community

Community Note

  • Please vote on this issue by adding a ๐Ÿ‘ reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue, please leave a comment

Tell us about your request

Paginator for DescribeRules in aws-sdk-elasticloadbalancingv2.

Tell us about the problem you're trying to solve.

I want to describe all rules for a listener by listener's ARN. DescribeRules operation has an interface for pagination (marker, next_marker, etc.) and I have to use them to list up all rules for a listener. Some operations in aws-sdk-elasticloadbalancingv2 has paginator implementations so they can be paginated easily, but DescribeRules does not. Having paginator for DescribeRules would be nice.

Are you currently working around this issue?

Implements pagination manually. Note that the following code is for v0.3.0.

Additional context

No response

TuhinNair

TuhinNair

feature-request
Comment Icon1

A note for the community

Community Note

  • Please vote on this issue by adding a ๐Ÿ‘ reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue, please leave a comment

Tell us about your request

Types to help deserialize the SES Receipt Rule S3 Action's optional SNS notification.

Tell us about the problem you're trying to solve.

I setup a SES Receipt Rule S3 Action with the optional SNS notification. This notification is delivered to a SQS Queue. The message body of the Queue message is an encoded JSON string. This string needs to be deserialized into a Rust struct. There are many fields and there's a risk of getting it wrong when modelling based on a small sample size. This is also something if done once can be reused by all users as opposed to everyone having to model this for their use.

Here's an example of the JSON:

Are you currently working around this issue?

I couldn't find the exact Struct needed in this repo so I use a combination of types from the unofficial aws-lambda-events crate and added my own wrapper type to fit the exact shape of the received notification.

Additional context

No response

yujinis

yujinis

bug
Comment Icon4

What is the problem?

I wrote a test to continuously check with DescribeCacheCluster API for ElastiCache cluster until it is available. I found it resulted in the error exactly when it repeated 52 times with 10 sec interval only in test (cargo test). That means, it did not result in the error when I executed it in main function (cargo run), literally with the same code. I also can avoid this error using 5 sec interval. It seems the difference is using #[tokio::main] or #[tokio::test]. I also tested with DescribeInstances API with the same structure in the code but it did not result in an error. I generated aws_smithy_http trace log and I just found the API request happened but no response confirmed. I reproduced this on EC2 with Amazon Linux2 and Ubuntu 20.04. I also reproduced this in ap-northeast-1 and us-east-1. I could not find any related issues in tokio or hyper.

Version

aws-sdk-test v0.1.0 (/home/ec2-user/aws-sdk-test) โ”œโ”€โ”€ aws-config v0.6.0 โ”‚ โ”œโ”€โ”€ aws-http v0.6.0 โ”‚ โ”‚ โ”œโ”€โ”€ aws-smithy-http v0.36.0 โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ aws-smithy-types v0.36.0 โ”‚ โ”‚ โ”œโ”€โ”€ aws-smithy-types v0.36.0 () โ”‚ โ”‚ โ”œโ”€โ”€ aws-types v0.6.0 โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ aws-smithy-async v0.36.0 โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ aws-smithy-types v0.36.0 () โ”‚ โ”œโ”€โ”€ aws-sdk-sso v0.6.0 โ”‚ โ”‚ โ”œโ”€โ”€ aws-endpoint v0.6.0 โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ aws-smithy-http v0.36.0 () โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ aws-types v0.6.0 () โ”‚ โ”‚ โ”œโ”€โ”€ aws-http v0.6.0 () โ”‚ โ”‚ โ”œโ”€โ”€ aws-sig-auth v0.6.0 โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ aws-sigv4 v0.6.0 โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ aws-smithy-http v0.36.0 () โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ aws-smithy-http v0.36.0 () โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ aws-types v0.6.0 () โ”‚ โ”‚ โ”œโ”€โ”€ aws-smithy-async v0.36.0 () โ”‚ โ”‚ โ”œโ”€โ”€ aws-smithy-client v0.36.0 โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ aws-smithy-async v0.36.0 () โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ aws-smithy-http v0.36.0 () โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ aws-smithy-http-tower v0.36.0 โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ aws-smithy-http v0.36.0 () โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ aws-smithy-types v0.36.0 () โ”‚ โ”‚ โ”œโ”€โ”€ aws-smithy-http v0.36.0 () โ”‚ โ”‚ โ”œโ”€โ”€ aws-smithy-http-tower v0.36.0 () โ”‚ โ”‚ โ”œโ”€โ”€ aws-smithy-json v0.36.0 โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ aws-smithy-types v0.36.0 () โ”‚ โ”‚ โ”œโ”€โ”€ aws-smithy-types v0.36.0 () โ”‚ โ”‚ โ”œโ”€โ”€ aws-types v0.6.0 () โ”‚ โ”œโ”€โ”€ aws-sdk-sts v0.6.0 โ”‚ โ”‚ โ”œโ”€โ”€ aws-endpoint v0.6.0 () โ”‚ โ”‚ โ”œโ”€โ”€ aws-http v0.6.0 () โ”‚ โ”‚ โ”œโ”€โ”€ aws-sig-auth v0.6.0 () โ”‚ โ”‚ โ”œโ”€โ”€ aws-smithy-async v0.36.0 () โ”‚ โ”‚ โ”œโ”€โ”€ aws-smithy-client v0.36.0 () โ”‚ โ”‚ โ”œโ”€โ”€ aws-smithy-http v0.36.0 () โ”‚ โ”‚ โ”œโ”€โ”€ aws-smithy-http-tower v0.36.0 () โ”‚ โ”‚ โ”œโ”€โ”€ aws-smithy-query v0.36.0 โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ aws-smithy-types v0.36.0 () โ”‚ โ”‚ โ”œโ”€โ”€ aws-smithy-types v0.36.0 () โ”‚ โ”‚ โ”œโ”€โ”€ aws-smithy-xml v0.36.0 โ”‚ โ”‚ โ”œโ”€โ”€ aws-types v0.6.0 () โ”‚ โ”œโ”€โ”€ aws-smithy-async v0.36.0 () โ”‚ โ”œโ”€โ”€ aws-smithy-client v0.36.0 () โ”‚ โ”œโ”€โ”€ aws-smithy-http v0.36.0 () โ”‚ โ”œโ”€โ”€ aws-smithy-http-tower v0.36.0 () โ”‚ โ”œโ”€โ”€ aws-smithy-json v0.36.0 () โ”‚ โ”œโ”€โ”€ aws-smithy-types v0.36.0 () โ”‚ โ”œโ”€โ”€ aws-types v0.6.0 () โ”œโ”€โ”€ aws-sdk-ec2 v0.6.0 โ”‚ โ”œโ”€โ”€ aws-endpoint v0.6.0 () โ”‚ โ”œโ”€โ”€ aws-http v0.6.0 () โ”‚ โ”œโ”€โ”€ aws-sig-auth v0.6.0 () โ”‚ โ”œโ”€โ”€ aws-smithy-async v0.36.0 () โ”‚ โ”œโ”€โ”€ aws-smithy-client v0.36.0 () โ”‚ โ”œโ”€โ”€ aws-smithy-http v0.36.0 () โ”‚ โ”œโ”€โ”€ aws-smithy-http-tower v0.36.0 () โ”‚ โ”œโ”€โ”€ aws-smithy-query v0.36.0 () โ”‚ โ”œโ”€โ”€ aws-smithy-types v0.36.0 () โ”‚ โ”œโ”€โ”€ aws-smithy-xml v0.36.0 () โ”‚ โ”œโ”€โ”€ aws-types v0.6.0 () โ”œโ”€โ”€ aws-sdk-elasticache v0.6.0 โ”‚ โ”œโ”€โ”€ aws-endpoint v0.6.0 () โ”‚ โ”œโ”€โ”€ aws-http v0.6.0 () โ”‚ โ”œโ”€โ”€ aws-sig-auth v0.6.0 () โ”‚ โ”œโ”€โ”€ aws-smithy-async v0.36.0 () โ”‚ โ”œโ”€โ”€ aws-smithy-client v0.36.0 () โ”‚ โ”œโ”€โ”€ aws-smithy-http v0.36.0 () โ”‚ โ”œโ”€โ”€ aws-smithy-http-tower v0.36.0 () โ”‚ โ”œโ”€โ”€ aws-smithy-query v0.36.0 () โ”‚ โ”œโ”€โ”€ aws-smithy-types v0.36.0 () โ”‚ โ”œโ”€โ”€ aws-smithy-xml v0.36.0 () โ”‚ โ”œโ”€โ”€ aws-types v0.6.0 (*)

Platform

[Amazon Linux 2] : Linux ip-172-31-23-85.ap-northeast-1.compute.internal 5.10.82-83.359.amzn2.x86_64 #1 SMP Tue Nov 30 20:47:14 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux, [Ubuntu 20.04] : Linux ip-172-31-19-97 5.11.0-1022-aws #23~20.04.1-Ubuntu SMP Mon Nov 15 14:03:19 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

AWS Services

ElastiCache

Description

No response

Logs

Using this : https://github.com/yujinis/aws-sdk-test

Reproduced:


Not reproduced:

seddonm1

seddonm1

feature-request
Comment Icon5

Community Note

Please upvote this issue by reacting with ๐Ÿ‘๐Ÿป to help us prioritize!

Tell us about your request

The Java SDK has an Anonymous Credentials Provider (https://github.com/aws/aws-sdk-java-v2/blob/master/core/auth/src/main/java/software/amazon/awssdk/auth/credentials/AnonymousCredentialsProvider.java) which allows accessing AWS Open Data like (https://registry.opendata.aws/nyc-tlc-trip-records-pds/) without having to provide credentials (see aws s3 ls #404 --no-sign-request)

There does not appear to be an equivalent for the Rust SDK.

Tell us about the problem you're trying to solve.

Access AWS Open Data, e.g. https://registry.opendata.aws/nyc-tlc-trip-records-pds/

Are you currently working around this issue?

No workaround.

Additional context

No response

Versions

Find the latest versions by id

v0.10.1 - Apr 14, 2022

Breaking Changes:

New this release:

Contributors Thank you for your contributions! โค

v0.9.0 - Mar 17, 2022

Breaking Changes:

  • โš  (aws-sdk-rust#406) aws_types::config::Config has been renamed to aws_types::sdk_config::SdkConfig. This is to better differentiate it from service-specific configs like aws_sdk_s3::Config. If you were creating shared configs with aws_config::load_from_env(), then you don't have to do anything. If you were directly referring to a shared config, update your use statements and struct names.

    Before:

    After:

  • โš  (smithy-rs#724) Timeout configuration has been refactored a bit. If you were setting timeouts through environment variables or an AWS profile, then you shouldn't need to change anything. Take note, however, that we don't currently support HTTP connect, read, write, or TLS negotiation timeouts. If you try to set any of those timeouts in your profile or environment, we'll log a warning explaining that those timeouts don't currently do anything.

    If you were using timeouts programmatically, you'll need to update your code. In previous versions, timeout configuration was stored in a single TimeoutConfig struct. In this new version, timeouts have been broken up into several different config structs that are then collected in a timeout::Config struct. As an example, to get the API per-attempt timeout in previous versions you would access it with <your TimeoutConfig>.api_call_attempt_timeout() and in this new version you would access it with <your timeout::Config>.api.call_attempt_timeout(). We also made some unimplemented timeouts inaccessible in order to avoid giving users the impression that setting them had an effect. We plan to re-introduce them once they're made functional in a future update.

New this release:

v0.8.0 - Feb 24, 2022

Breaking Changes:

  • โš  (smithy-rs#1216) aws-sigv4 no longer skips the content-length and content-type headers when signing with SignatureLocation::QueryParams

New this release:

  • ๐ŸŽ‰ (smithy-rs#1220, aws-sdk-rust#462) Made it possible to change settings, such as load timeout, on the credential cache used by the DefaultCredentialsChain.
  • ๐Ÿ› (smithy-rs#1197) Fixed a bug that caused clients to eventually stop retrying. The cross-request retry allowance wasn't being reimbursed upon receiving a successful response, so once this allowance reached zero, no further retries would ever be attempted.
  • ๐Ÿ› (smithy-rs#1217, aws-sdk-rust#467) ClientBuilder helpers rustls() and native_tls() now return DynConnector so that they once again work when constructing clients with custom middleware in the SDK.
  • ๐Ÿ› (smithy-rs#1216, aws-sdk-rust#466) Fixed a bug in S3 that prevented the content-length and content-type inputs from being included in a presigned request signature. With this fix, customers can generate presigned URLs that enforce content-length and content-type for requests to S3.

v0.7.0 - Feb 21, 2022

0.7.0 (February 18th, 2022)

Breaking Changes:

  • โš  (smithy-rs#1144) The aws_config::http_provider module has been renamed to aws_config::http_credential_provider to better reflect its purpose.

  • โš  (smithy-rs#1144) Some APIs required that timeout configuration be specified with an aws_smithy_client::timeout::Settings struct while others required an aws_smithy_types::timeout::TimeoutConfig struct. Both were equivalent. Now aws_smithy_types::timeout::TimeoutConfig is used everywhere and aws_smithy_client::timeout::Settings has been removed. Here's how to migrate code your code that depended on timeout::Settings:

    The old way:

    The new way:

  • โš  (smithy-rs#1144) MakeConnectorFn, HttpConnector, and HttpSettings have been moved from aws_config::provider_config to aws_smithy_client::http_connector. This is in preparation for a later update that will change how connectors are created and configured.

    If you were using these structs/enums, you can migrate your old code by importing them from their new location.

  • โš  (smithy-rs#1144) Along with moving HttpConnector to aws_smithy_client, the HttpConnector::make_connector method has been renamed to HttpConnector::connector.

    If you were using this method, you can migrate your old code by calling connector instead of make_connector.

  • โš  (smithy-rs#1085) Moved the following re-exports into a types module for all services:

    • aws_sdk_<service>::AggregatedBytes -> aws_sdk_<service>::types::AggregatedBytes
    • aws_sdk_<service>::Blob -> aws_sdk_<service>::types::Blob
    • aws_sdk_<service>::ByteStream -> aws_sdk_<service>::types::ByteStream
    • aws_sdk_<service>::DateTime -> aws_sdk_<service>::types::DateTime
    • aws_sdk_<service>::SdkError -> aws_sdk_<service>::types::SdkError
  • โš  (smithy-rs#1085) AggregatedBytes and ByteStream are now only re-exported if the service has streaming operations, and Blob/DateTime are only re-exported if the service uses them.

  • โš  (smithy-rs#1130) MSRV increased from 1.54 to 1.56.1 per our 2-behind MSRV policy.

  • โš  (smithy-rs#1132) Fluent clients for all services no longer have generics, and now use DynConnector and DynMiddleware to allow for connector/middleware customization. This should only break references to the client that specified generic types for it.

    If you customized the AWS client's connector or middleware with something like the following:

    Then you will need to wrap the custom connector or middleware in DynConnector and DynMiddleware respectively:

    If you had functions that took a generic connector, such as the following:

    Then the generics and trait bounds will no longer be necessary:

    Similarly, functions that took a generic middleware can replace the generic with DynMiddleware and remove their trait bounds.

New this release:

  • ๐Ÿ› (aws-sdk-rust#443) The ProfileFileRegionProvider will now respect regions set in chained profiles
  • (smithy-rs#1144) Several modules defined in the aws_config crate that used to be declared within another module's file have been moved to their own files. The moved modules are sts, connector, and default_providers. They still have the exact same import paths.
  • ๐Ÿ› (smithy-rs#1129) Fix some docs links not working because they were escaped when they shouldn't have been
  • (smithy-rs#1085) The Client and Config re-exports now have their documentation inlined in the service docs
  • ๐Ÿ› (smithy-rs#1180) Fixed example showing how to use hardcoded credentials in aws-types

v0.6.0 - Jan 26, 2022

New this release:

v0.5.2 - Jan 21, 2022

New this release:

  • ๐Ÿ› (smithy-rs#1100) Internal: Update sync script to run gradle clean. This fixes an issue where codegen was not triggered when only properties changed.

v0.5.1 - Jan 20, 2022

New this release:

  • ๐Ÿ› (smithy-rs#1089) Fix dev-dependency cycle between aws-sdk-sso and aws-config

v0.5.0 - Jan 19, 2022

New this release:

Contributors Thank you for your contributions! โค

v0.4.1 - Jan 10, 2022

New this release:

  • ๐Ÿ› (smithy-rs#1050, @nmoutschen) Fix typos for X-Ray trace ID environment variable in aws_http::recursion_detection
  • ๐Ÿ› (smithy-rs#1054, aws-sdk-rust#391) Fix critical paginator bug where an empty outputToken lead to a never ending stream.

Contributors Thank you for your contributions! โค

  • @nmoutschen (smithy-rs#1050)

v0.4.0 - Jan 06, 2022

Breaking Changes:

  • โš  (smithy-rs#990) Codegen will no longer produce builders and clients with methods that take impl Into<T> except for strings and boxed types.
  • โš  (smithy-rs#961) The meta, environment, and dns Cargo feature flags were removed from aws-config. The code behind the dns flag is now enabled when rt-tokio is enabled. The code behind the meta and environment flags is always enabled now.
  • โš  (smithy-rs#1003) aws_http::AwsErrorRetryPolicy was moved to aws_http::retry::AwsErrorRetryPolicy.
  • โš  (smithy-rs#1017, smithy-rs#930) Simplify features in aws-config. All features have been removed from aws-config with the exception of: rt-tokio, rustls and native-tls. All other features are now included by default. If you depended on those features specifically, remove them from your features listing.

New this release:

  • ๐ŸŽ‰ (aws-sdk-rust#47, smithy-rs#1006) Add support for paginators! Paginated APIs now include .into_paginator() and (when supported) .into_paginator().items() to enable paginating responses automatically. The paginator API should be considered in preview and is subject to change pending customer feedback.
  • (smithy-rs#712) We removed an example 'telephone-game' that was problematic for our CI. The APIs that that example demonstrated are also demonstrated by our Polly and TranscribeStreaming examples so please check those out if you miss it.
  • ๐Ÿ› (aws-sdk-rust#357) Generated docs should no longer contain links that don't go anywhere
  • (aws-sdk-rust#254, @jacco) Made fluent operation structs cloneable
  • (smithy-rs#973) Debug implementation of Credentials will print expiry in a human readable way.
  • ๐Ÿ› (smithy-rs#999, smithy-rs#143, aws-sdk-rust#344) Add Route53 customization to trim /hostedzone/ prefix prior to serialization. This fixes a bug where round-tripping a hosted zone id resulted in an error.
  • ๐Ÿ› (smithy-rs#998, aws-sdk-rust#359) Fix bug where ECS credential provider could not perform retries.
  • (smithy-rs#1003) Add recursion detection middleware to the default stack
  • (smithy-rs#1002, aws-sdk-rust#352) aws_types::Config is now Clone
  • (smithy-rs#670, @jacco) Example for Config builder region function added
  • (smithy-rs#1021, @kiiadi) Add function to aws_config::profile::ProfileSet that allows listing of loaded profiles by name.
  • ๐Ÿ› (smithy-rs#1046, aws-sdk-rust#384) Fix IMDS credentials provider bug where the instance profile name was incorrectly cached.

Contributors Thank you for your contributions! โค

  • @jacco (aws-sdk-rust#254, smithy-rs#670)
  • @kiiadi (smithy-rs#1021)

v0.3.0 - Dec 16, 2021

Breaking Changes:

  • โš  (smithy-rs#930) If you directly depend on AWS or Smithy runtime crates (e.g., AWS crates not named aws-config or prefixed with aws-sdk-), the formerly default features from those crates must now be explicitly set in your Cargo.toml.

    Upgrade guide

    | aws-smithy-async = "VERSION" | aws-smithy-async = { version = "VERSION", features = ["rt-tokio"] } | | aws-smithy-client = "VERSION" | aws-smithy-client = { version = "VERSION", features = ["client-hyper", "rustls", "rt-tokio"] } | | aws-smithy-http = "VERSION" | aws-smithy-http = { version = "VERSION", features = ["rt-tokio"] } |

  • โš  (smithy-rs#940) aws_hyper::Client which was just a re-export of aws_smithy_types::Client with generics set has been removed. If you used aws_hyper::Client or aws_hyper::Client::https() you can update your code to use aws_smithy_client::Builder::https().

  • โš  (smithy-rs#947) The features aws-hyper/rustls and aws-hyper/native-tls have been removed. If you were using these, use the identical features on aws-smithy-client.

  • โš  (smithy-rs#959, smithy-rs#934) aws-hyper::AwsMiddleware is now generated into generated service clients directly. If you used aws_hyper::Middleware, use ::middleware::DefaultMiddleware` instead.

New this release:

  • ๐Ÿ› (aws-sdk-rust#330) A bug that occurred when signing certain query strings has been fixed
  • ๐Ÿ› (smithy-rs#949, @a-xp) Fix incorrect argument order in the builder for LazyCachingCredentialsProvider
  • ๐Ÿ› (aws-sdk-rust#304) aws-config will now work as intended for users that want to use native-tls instead of rustls. Previously, it was difficult to ensure that rustls was not in use. Also, there is now an example of how to use native-tls and a test that ensures rustls is not in the dependency tree
  • ๐Ÿ› (aws-sdk-rust#317, smithy-rs#907) Removed inaccurate log message when a client was used without a sleep implementation, and improved context and call to action in logged messages around missing sleep implementations.
  • (smithy-rs#923) Use provided sleep_impl for retries instead of using Tokio directly.
  • (smithy-rs#920) Fix typos in module documentation for generated crates
  • ๐Ÿ› (aws-sdk-rust#301, smithy-rs#892) Avoid serializing repetitive xmlns attributes when serializing XML. This reduces the length of serialized requests and should improve compatibility with localstack.
  • ๐Ÿ› (smithy-rs#953, aws-sdk-rust#331) Fixed a bug where certain characters caused a panic during URI encoding.

Contributors Thank you for your contributions! โค

  • @a-xp (smithy-rs#949)

v0.2.0 - Dec 02, 2021

This release was a version bump to fix a version number conflict on crates.io while releasing 0.1.0. The changes in 0.1.0 were: New this release

  • Add docs.rs metadata section to all crates to document all features
  • Added a new example showing how to set all currently supported timeouts
  • Add a new check so that the SDK doesn't emit an irrelevant $HOME dir warning when running in a Lambda (aws-sdk-rust#307)
  • :bug: Don't capture empty session tokens from the AWS_SESSION_TOKEN environment variable (aws-sdk-rust#316, smithy-rs#906)

v0.1.0 - Dec 02, 2021

New this release

  • Add docs.rs metadata section to all crates to document all features
  • Added a new example showing how to set all currently supported timeouts
  • Add a new check so that the SDK doesn't emit an irrelevant $HOME dir warning when running in a Lambda (aws-sdk-rust#307)
  • :bug: Don't capture empty session tokens from the AWS_SESSION_TOKEN environment variable (aws-sdk-rust#316, smithy-rs#906)

v0.0.26-alpha - Nov 24, 2021

Breaking Changes

  • RetryConfigBuilder::merge_with has been renamed to RetryConfigBuilder::take_unset_from
  • Credentials::from_keys is now behind a feature flag named hardcoded-credentials in aws-types. It is NOT secure to hardcode credentials into your application, and the credentials providers that come with the AWS SDK should be preferred. (smithy-rs#875, smithy-rs#317)
  • (aws-smithy-client): Extraneous pub use SdkSuccess removed from aws_smithy_client::hyper_ext. (smithy-rs#855)
  • The add_metadata function was removed from AwsUserAgent in aws-http. Use with_feature_metadata, with_config_metadata, or with_framework_metadata now instead. (smithy-rs#865)
  • Several breaking changes around aws_smithy_types::Instant were introduced by smithy-rs#849:
    • aws_smithy_types::Instant from was renamed to DateTime to avoid confusion with the standard library's monotonically nondecreasing Instant type.

    • DateParseError in aws_smithy_types has been renamed to DateTimeParseError to match the type that's being parsed.

    • The chrono-conversions feature and associated functions have been moved to the aws-smithy-types-convert crate.

      • Calls to Instant::from_chrono should be changed to:

      • Calls to instant.to_chrono() should be changed to:

    • Instant::from_system_time and Instant::to_system_time have been changed to From trait implementations.

      • Calls to from_system_time should be changed to:

      • Calls to to_system_time should be changed to:

    • Several functions in Instant/DateTime were renamed:

      • Instant::from_f64 -> DateTime::from_secs_f64
      • Instant::from_fractional_seconds -> DateTime::from_fractional_secs
      • Instant::from_epoch_seconds -> DateTime::from_secs
      • Instant::from_epoch_millis -> DateTime::from_millis
      • Instant::epoch_fractional_seconds -> DateTime::as_secs_f64
      • Instant::has_nanos -> DateTime::has_subsec_nanos
      • Instant::epoch_seconds -> DateTime::secs
      • Instant::epoch_subsecond_nanos -> DateTime::subsec_nanos
      • Instant::to_epoch_millis -> DateTime::to_millis
    • The DateTime::fmt method is now fallible and fails when a DateTime's value is outside what can be represented by the desired date format.

New this week

  • :warning: MSRV increased from 1.53.0 to 1.54.0 per our 3-behind MSRV policy.
  • Conversions from aws_smithy_types::DateTime to OffsetDateTime from the time crate are now available from the aws-smithy-types-convert crate. (smithy-rs#849)
  • Fixed links to Usage Examples (smithy-rs#862, @floric)
  • Added missing features to user agent formatting, and made it possible to configure an app name for the user agent via service config. (smithy-rs#865)
  • :bug: Relaxed profile name validation to allow @ and other characters (smithy-rs#861, aws-sdk-rust#270)
  • :bug: Fixed signing problem with S3 Control (smithy-rs#858, aws-sdk-rust#291)
  • :tada: Timeouts for requests are now configurable. You can set a timeout for each individual request attempt or for all attempts made for a request. (smithy-rs#831)
    • SdkError now includes a variant TimeoutError for when a request times out (smithy-rs#885)
  • Improve docs on aws-smithy-client (smithy-rs#855)
  • Fix http-body dependency version (smithy-rs#883, aws-sdk-rust#305)

Contributions

Thank you for your contributions! :heart:

  • @floric (smithy-rs#862)

v0.0.25-alpha - Nov 11, 2021

No changes since last release except for version bumping since older versions of the AWS SDK were failing to compile with the 0.27.0-alpha.2 version chosen for some of the supporting crates.

v0.0.24-alpha - Nov 09, 2021

Breaking Changes

  • Members named builder on model structs were renamed to builder_value so that their accessors don't conflict with the existing builder() methods (smithy-rs#842)

New this week

  • Fix epoch seconds date-time parsing bug in aws-smithy-types (smithy-rs#834)
  • Omit trailing zeros from fraction when formatting HTTP dates in aws-smithy-types (smithy-rs#834)
  • Moved examples into repository root (aws-sdk-rust#181, smithy-rs#843)
  • Model structs now have accessor methods for their members. We recommend updating code to use accessors instead of public fields. A future release will deprecate the public fields before they are made private. (smithy-rs#842)
  • :bug: Fix bug that caused signing to fail for requests where the body length was <=9. (smithy-rs#845)

v0.0.23-alpha - Nov 05, 2021

To upgrade to the new version of the SDK, update your version to 0.0.23-alpha:

New this week

  • ๐ŸŽ‰ The SDK is available on crates.io! This also means that generated docs are now searchable and hosted on https://docs.rs.
  • :tada: Add support for AWS Glacier (smithy-rs#801)
  • :tada: Add support for AWS Panorama
  • :bug: Fix native-tls feature in aws-config (aws-sdk-rust#265, smithy-rs#803)
  • ๐Ÿ“– Add example to aws-sig-auth for generating an IAM Token for RDS (smithy-rs#811, aws-sdk-rust#147)
  • :bug: hyper::Error(IncompleteMessage) will now be retried (smithy-rs#815)
  • :bug: Fix generated docs on unions like dynamodb::AttributeValue. (smithy-rs#826)

Breaking Changes

  • <operation>.make_operation(&config) is now an async function for all operations. Code should be updated to call .await. This will only impact users using the low-level API. (smithy-rs#797)
  • :bug: S3 request metadata signing now correctly trims headers fixing problems like this (smithy-rs#761)

v0.0.22-alpha - Oct 20, 2021

Breaking Changes

  • CredentialsError variants became non-exhaustive & now have struct bodies. This makes them impossible to construct directly outside of the aws_types crate. In order to construct credentials errors, new methods have been added for each variant. Instead of CredentialsError::Unhandled(...), you should instead use CredentialsError::unhandled. Matching methods exist for all variants. If you match on specific variants, you will also need to update your code to include ... (#781)
  • The default credentials chain now returns CredentialsError::CredentialsNotLoaded instead of ProviderError when no credentials providers are configured.
  • :warning: All Smithy runtime crates have been renamed to have an aws- prefix. This may require code changes:
    • Cargo.toml changes:
      • smithy-async -> aws-smithy-async
      • smithy-client -> aws-smithy-client
      • smithy-eventstream -> aws-smithy-eventstream
      • smithy-http -> aws-smithy-http
      • smithy-http-tower -> aws-smithy-http-tower
      • smithy-json -> aws-smithy-json
      • smithy-protocol-test -> aws-smithy-protocol-test
      • smithy-query -> aws-smithy-query
      • smithy-types -> aws-smithy-types
      • smithy-xml -> aws-smithy-xml
    • Rust use statement changes:
      • smithy_async -> aws_smithy_async
      • smithy_client -> aws_smithy_client
      • smithy_eventstream -> aws_smithy_eventstream
      • smithy_http -> aws_smithy_http
      • smithy_http_tower -> aws_smithy_http_tower
      • smithy_json -> aws_smithy_json
      • smithy_protocol_test -> aws_smithy_protocol_test
      • smithy_query -> aws_smithy_query
      • smithy_types -> aws_smithy_types
      • smithy_xml -> aws_smithy_xml

New this week

  • Moved the contents of aws-auth into the aws-http runtime crate (smithy-rs#783)
  • Fix instances where docs were missing in generated services and add #[warn_missing_docs] (smithy-rs#779)
  • Add tracing output for resolved AWS endpoint (smithy-rs#784)
  • Update AWS service models (smithy-rs#790)
  • Add support for the following Glacier customizations:
    • Set the ApiVersion header (smithy-rs#138, #787)

v0.0.21-alpha - Oct 18, 2021

v0.0.21-alpha (October 15th, 2021)

New this week

  • Prepare crate manifests for publishing to crates.io (smithy-rs#755)
  • Add support for IAM Roles for tasks credential provider (smithy-rs#765, aws-sdk-rust#123)
  • All service crates now have generated README files (smithy-rs#766)
  • Update AWS service models (smithy-rs#772)
  • :tada: Add support for Amazon Managed Grafana (smithy-rs#772)
  • :tada: Make retry behavior configurable
    • With env vars AWS_MAX_ATTEMPTS and AWS_RETRY_MODE
    • With ~/.aws/config settings max_attempts and retry_mode
    • By calling the with_retry_config method on a Config and passing in a RetryConfig
    • Only the Standard retry mode is currently implemented. Adaptive retry mode will be implemented at a later date.
    • For more info, see the AWS Reference pages on configuring these settings:

v0.0.20-alpha - Oct 12, 2021

v0.0.20-alpha (October, 7, 2021)

Breaking changes

  • :warning: MSRV increased from 1.52.1 to 1.53.0 per our 3-behind MSRV policy.
  • SmithyConnector and DynConnector now return ConnectorError instead of Box<dyn Error>. If you have written a custom connector, it will need to be updated to return the new error type. (#744)
  • The DispatchError variant of SdkError now contains ConnectorError instead of Box<dyn Error> (#744).

New This Week

  • :tada: Add presigned request support and examples for S3 GetObject and PutObject (smithy-rs#731, aws-sdk-rust#139)
  • :tada: Add presigned request support and example for Polly SynthesizeSpeech (smithy-rs#735, aws-sdk-rust#139)
  • Add connect & HTTP read timeouts to IMDS, defaulting to 1 second
  • IO and timeout errors from Hyper can now be retried (#744)
  • :bug: Fix error when receiving Cont event from S3 SelectObjectContent (smithy-rs#736)
  • :bug: Fix bug in event stream receiver that could cause the last events in the response stream to be lost when using S3 SelectObjectContent (smithy-rs#736)
  • Updated EC2 code examples to include readme; refactored operations from main into separate functions.
  • Updated Transcribe code example to take an audio file as a command-line option and added readme.
  • Refactored API Gateway code example by moving operation out of main and into a separate function; added readme.
  • Updated Auto Scaling code example to move operation from main to separate function; added readme.
  • Updated AWS Config code examples to include a readme; added command-line options; added DeleteConfigurationRecorder, DeleteDeliveryChannel, ListConfigurationRecorders, ListDeliveryChannels, ListResources, ShowResourceHistory, and EnableConfig code examples.
  • :tada: Add support for 6 new AWS services:
    • Wisdom
    • VoiceId
    • Account
    • KafkaConnect
    • OpenSearch
    • CloudControl

Contributors Thank you!! โค๏ธ

  • @obi1kenobi (smithy-rs#719)
  • @guyilin-amazon (smithy-rs#750)
  • @yerke (smithy-rs#753)

v0.0.19-alpha - Sep 24, 2021

New This Week

  • :tada: IMDS support in the default credential provider chain (aws-sdk-rust#97)
  • :tada: Add sts::AssumeRoleProvider to aws-config. This enables customers to invoke STS directly, instead of using it via ~/.aws/config. (smithy-rs#703, aws-sdk-rust#3)
  • Add IMDS client to aws-config (smithy-rs#701)
  • Add IMDS credential provider to aws-config (smithy-rs#709)
  • Add IMDS region provider to aws-config (smithy-rs#715, aws-sdk-rust#97)
  • Add query param signing to the aws-sigv4 crate (smithy-rs#707)
  • :bug: Update event stream Receivers to be Send (smithy-rs#702, aws-sdk-rust#224)
  • :bug: Fix panic when signing non-ASCII header values (smithy-rs#708, aws-sdk-rust#226)

Contributions

Thank you for your contributions! :heart:

  • @jonhoo (smithy-rs#703)

v0.0.18-alpha - Sep 14, 2021

v0.0.18-alpha (September 14th, 2021)

New This Week

  • ๐ŸŽ‰ Add support for OpenSearch service & bring in other model updates (smithy-rs#698)
  • Cleanup docs in aws-config (smithy-rs#693)
  • ๐Ÿ› Fixes issue where Content-Length header could be duplicated leading to signing failure (#220, smithy-rs#697)

v0.0.17-alpha - Sep 02, 2021

This release adds support for three commonly requested features:

  • More powerful credential chain
  • Support for constructing multiple clients from the same configuration
  • Support for Transcribe streaming and S3 Select

In addition, this overhauls client configuration which lead to a number of breaking changes. Detailed changes are inline.

Current Credential Provider Support:

  • Environment variables
  • Web Identity Token Credentials
  • Profile file support (partial)
    • Credentials
      • SSO
      • ECS Credential source
      • IMDS credential source
      • Assume role from source profile
      • Static credentials source profile
      • WebTokenIdentity provider
    • Region
  • IMDS
  • ECS

Upgrade Guide

If you use <sdk>::Client::from_env

from_env loaded region & credentials from environment variables only. Default sources have been removed from the generated SDK clients and moved to the aws-config package. Note that the aws-config package default chain adds support for profile file and web identity token profiles.

  1. Add a dependency on aws-config:

  2. Update your client creation code:

If you used <client>::Config::builder()

Config::build() has been modified to not fallback to a default provider. Instead, use aws-config to load and modify the default chain. Note that when you switch to aws-config, support for profile files and web identity tokens will be added.

  1. Add a dependency on aws-config:

  2. Update your client creation code:

If you used aws-auth-providers

All credential providers that were in aws-auth-providers have been moved to aws-config. Unless you have a specific use case for a specific credential provider, you should use the default provider chain:

If you maintain your own credential provider

AsyncProvideCredentials has been renamed to ProvideCredentials. The trait has been moved from aws-auth to aws-types. The original ProvideCredentials trait has been removed. The return type has been changed to by a custom future.

For synchronous use cases:

For asynchronous use cases:

Changes

Breaking Changes

  • Credential providers from aws-auth-providers have been moved to aws-config (smithy-rs#678)

  • AsyncProvideCredentials has been renamed to ProvideCredentials. The original non-async provide credentials has been removed. See the migration guide above.

  • <sevicename>::from_env() has been removed (#675). A drop-in replacement is available:

    1. Add a dependency on aws-config:

    2. Update your client creation code:

  • ProvideRegion has been moved to aws_config::meta::region::ProvideRegion. (smithy-rs#675)

  • aws_types::region::ChainProvider has been moved to aws_config::meta::region::RegionProviderChain (smithy-rs#675).

  • ProvideRegion is now asynchronous. Code that called provider.region() must be changed to provider.region().await.

  • <awsservice>::Config::builder() will not load a default region. To preserve previous behavior:

    1. Add a dependency on aws-config:

New this week

  • :tada: Add profile file provider for region (smithy-rs#594, smithy-rs#682)
  • :tada: Add support for shared configuration between multiple services (smithy-rs#673)
  • :tada: Add support for Transcribe StartStreamTranscription and S3 SelectObjectContent operations (smithy-rs#667)
  • :tada: Add support for new MemoryDB service (smithy-rs#677)
  • Improve documentation on collection-aware builders (smithy-rs#664)
  • Update AWS SDK models (smithy-rs#677)
  • :bug: Fix sigv4 signing when request ALPN negotiates to HTTP/2. (smithy-rs#674)
  • :bug: Fix integer size on S3 Size (smithy-rs#679, #209)
  • :bug: Fix MediaLive response parsing issue (smithy-rs#683, #212)

v0.0.16-alpha - Aug 19, 2021

New This Week

  • :tada: Add Chime Identity, Chime Messaging, and Snow Device Management support (smithy-rs#657)
  • :tada: Add profile file credential provider implementation. This implementation currently does not support credential sources for assume role providers other than environment variables. (smithy-rs#640)
  • :tada: Add support for WebIdentityToken providers via profile & environment variables. (smithy-rs#654)
  • :bug: Fix name collision that occurred when a model had both a union and a structure named Result (smithy-rs#643)
  • :bug: Fix STS Assume Role with WebIdentity & Assume role with SAML to support clients with no credentials provided (smithy-rs#652)
  • Update AWS SDK models (smithy-rs#657)
  • Add initial implementation of a default provider chain. (smithy-rs#650)

v0.0.15-alpha - Aug 11, 2021

This release primarily contains internal changes to runtime components & updates to AWS models.

Breaking changes

  • (smithy-rs#635) The config(), config_mut(), request(), and request_mut() methods on operation::Request have been renamed to properties(), properties_mut(), http(), and http_mut() respectively.

  • (smithy-rs#635) The Response type on Tower middleware has been changed from http::Response<SdkBody> to operation::Response. The HTTP response is still available from the operation::Response using its http() and http_mut() methods.

  • (smithy-rs#635) The ParseHttpResponse trait's parse_unloaded() method now takes an operation::Response rather than an http::Response<SdkBody>.

  • (smithy-rs#626) ParseHttpResponse no longer has a generic argument for the body type, but instead, always uses SdkBody. This may cause compilation failures for you if you are using Smithy generated types to parse JSON or XML without using a client to request data from a service. The fix should be as simple as removing <SdkBody> in the example below:

    Before:

    After:

New This Week

  • The closure passed to async_provide_credentials_fn can now borrow values (smithy-rs#637)
  • Bring in the latest AWS models (smithy-rs#630)

v0.0.14-alpha - Aug 03, 2021

IoT Data Plane is now available! If you discover it isn't functioning as expected, please let us know!

This week also sees the addition of a robust async caching credentials provider. Take a look at the STS example to see how to use it.

To upgrade to the new release, update tag to v0.0.14-alpha:

New This Week

  • :tada: Add IoT Data Plane (smithy-rs#624)
  • :tada: Add LazyCachingCredentialsProvider to aws-auth for use with expiring credentials, such as STS AssumeRole. Update STS example to use this new provider (smithy-rs#578, smithy-rs#595)
  • :bug: Correctly encode HTTP Checksums using base64 instead of hex. Fixes #164. (smithy-rs#615)
  • Overhaul serialization/deserialization of numeric/boolean types. This resolves issues around serialization of NaN/Infinity and should also reduce the number of allocations required during serialization. (smithy-rs#618)
  • Update SQS example to clarify usage of FIFO vs. standard queues (#162, @trevorrobertsjr)

Contributions

Thank you for your contributions! :heart:

  • @trevorrobertsjr (#622)

v0.0.13-alpha - Jul 28, 2021

๐ŸŽ‰ This week's release includes most of the remaining AWS services (269 in total!).

Breaking changes

  • test-util has been made an optional dependency and has moved from aws-hyper to smithy-http. If you were relying on aws_hyper::TestConnection, add smithy-client as a dependency and enable the optional test-util feature. This prunes some unnecessary dependencies on roxmltree and serde_json for most users. (smithy-rs#608)

New This Week

  • :tada: Release all but four remaining AWS services! Glacier, IoT Data Plane, Timestream DB and Transcribe Streaming will be available in a future release. If you discover that a service isn't functioning as expected please let us know! (smithy-rs#607)
  • :bug: Bugfix: Fix parsing bug where parsing XML incorrectly stripped whitespace (smithy-rs#590, #153)
  • We now run some tests on Windows (smithy-rs#594)
  • :bug: Bugfix: Constrain RFC-3339 timestamp formatting to microsecond precision (smithy-rs#596, #152)

v0.0.12-alpha - Jul 20, 2021

This week we've added Autoscaling and fixed an S3 bug.

To update to the new release, change your tag to v0.0.12-alpha.

New this Week

  • ๐ŸŽ‰ Add support for Autoscaling (#576, #582)
  • AsyncProvideCredentials now introduces an additional lifetime parameter, simplifying bridging it with #[async_trait] interfaces
  • Fix S3 bug when content type was set explicitly (aws-sdk-rust#131, #566, @eagletmt)

Contributions Thank you for your contributions! โค๏ธ

  • @eagletmt (#566)

v0.0.11-alpha - Jul 06, 2021

This week, we've added AWS Config, EBS, Cognito, and Snowball. Projects that are implementing the ProvideCredentials trait will need to update their imports and should consider using the new async_provide_credentials_fn for async credential use-cases.

To update to the new release, change your tag to v0.0.11-alpha.

New this Week

  • โš ๏ธ Breaking Change: ProvideCredentials and CredentialError were both moved into aws_auth::provider when they were previously in aws_auth (#572)
  • ๐ŸŽ‰ Add support for AWS Config (#570)
  • ๐ŸŽ‰ Add support for EBS (#567)
  • ๐ŸŽ‰ Add support for Cognito (#573)
  • ๐ŸŽ‰ Add support for Snowball (#579, @landonxjames)
  • Make it possible to asynchronously provide credentials with async_provide_credentials_fn (#572, #577)
  • Improve RDS, QLDB, Polly, and KMS examples (#561, #560, #558, #556, #550)
  • Update AWS SDK models (#575)
  • ๐Ÿ› Bugfix: Fill in message from error response even when it doesn't match the modeled case format (#565)

Contributions

Thank you for your contributions! โค๏ธ

  • landonxjames (#579)

v0.0.10-alpha - Jun 30, 2021

This week, we've added EKS, ECR and Cloudwatch. The JSON deserialization implementation has been replaced, please be on the lookout for potential issues and compile time improvements.

To update to the new release, change your tag to v0.0.10-alpha.

New this Week

  • ๐ŸŽ‰ Add support for ECR (smithy-rs#557)
  • ๐ŸŽ‰ Add support for Cloudwatch (smithy-rs#554)
  • ๐ŸŽ‰ Add support for EKS (smithy-rs#553)
  • โš ๏ธ Breaking Change: httpLabel no longer causes fields to be non-optional. You may need to adapt code that uses models. (#537)
  • โš ๏ธ Breaking Change: Exception is not renamed to Error. Code may need to be updated to replace Error with Exception when naming error shapes.
  • โš ๏ธ Breaking Change: Models are now in strict pascal case including acronyms (eg. dynamodb::model::{SSESpecification => SseSpecification})
  • Add more SES examples, and improve examples for Batch.
  • Improved error handling ergonomics: Errors now provide is_<variantname>() methods to simplify error handling
  • ๐Ÿ› Bugfix: Fix bug in create_multipart_upload: #127 (smithy-rs#531, @eagletmt)

Contributors

Thank you for your contributions! โค๏ธ

  • @eagletmt (#531)

Information - Updated Apr 15, 2022

Stars: 1.5K
Forks: 106
Issues: 89

CDRS is looking for maintainers

CDRS is Apache Cassandra driver written in pure Rust

CDRS is looking for maintainers

Rust bindings for the C++ api of PyTorch

LIghtweight wrapper for pytorch eg libtorch in rust

Rust bindings for the C++ api of PyTorch

The arkworks ecosystem consist of Rust libraries for designing and working with zero knowledge succinct...

This library is released under the MIT License and the Apache v2 License (see License)

The arkworks ecosystem consist of Rust libraries for designing and working with zero knowledge succinct...

A Rust wrapper library for smealum's ctrulib

A Rust wrapper library for smealum's LICENSE-APACHE, COPYRIGHT for details

A Rust wrapper library for smealum's ctrulib

OpenSearch Rust Client

a community-driven, open source fork of elasticsearch-rs licensed under the Apache v2

OpenSearch Rust Client

A 'Space Invader' clone made with rust and made for the terminal

Inspired by Apache License (Version 2

A 'Space Invader' clone made with rust and made for the terminal

The compact yet complete benchmarking suite for Rust

This project is licensed under the Apache-2

The compact yet complete benchmarking suite for Rust

Rust SDK for Structured Expression Project Toolkit (SEPT)

Copyright 2021 by Victor Dods, licensed under Apache 2

Rust SDK for Structured Expression Project Toolkit (SEPT)

๐Ÿšถ๐Ÿšถ๐Ÿšถ rust-ingress

This is a POC for ingress solution using Apache Kafka with two services for ingressing and storing messages into Postgres

๐Ÿšถ๐Ÿšถ๐Ÿšถ rust-ingress

Rust Embedded HAL for Apache NuttX RTOS

This crate provides Rust Embedded HAL interfaces (GPIO, I2C, SPI and Delay) for Apache NuttX RTOS

Rust Embedded HAL for Apache NuttX RTOS
Facebook Instagram Twitter GitHub Dribbble
Privacy