Google Cloud Platform: How can I get a signed URL for putting an object to Google Cloud Store with Python
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
I'm using google-api-python-client
but can't make any progress in how to create signed PUT URL
just for direct uploading object to Google Cloud Storage Bucket. There is no consistent documentation on how I can get signed URL using the last version of the Google Python client.
python google-cloud-platform google-cloud-storage google-api-client
add a comment |
I'm using google-api-python-client
but can't make any progress in how to create signed PUT URL
just for direct uploading object to Google Cloud Storage Bucket. There is no consistent documentation on how I can get signed URL using the last version of the Google Python client.
python google-cloud-platform google-cloud-storage google-api-client
add a comment |
I'm using google-api-python-client
but can't make any progress in how to create signed PUT URL
just for direct uploading object to Google Cloud Storage Bucket. There is no consistent documentation on how I can get signed URL using the last version of the Google Python client.
python google-cloud-platform google-cloud-storage google-api-client
I'm using google-api-python-client
but can't make any progress in how to create signed PUT URL
just for direct uploading object to Google Cloud Storage Bucket. There is no consistent documentation on how I can get signed URL using the last version of the Google Python client.
python google-cloud-platform google-cloud-storage google-api-client
python google-cloud-platform google-cloud-storage google-api-client
edited Jan 5 at 4:15
Dap
1,2212135
1,2212135
asked Jan 3 at 12:53
SymonSymon
548816
548816
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
I used the google cloud storage library. I recommend it as its supported by google and abstracts some of the complexities in the signed url dance
First get a certificate
https://console.developers.google.com/
Save the certificate to your project
Install google cloud library
pip install google-cloud-storage==1.9.0
Import generate_signed_url and google.storage and then initialize storage client with the certificate and access the bucket
from google.cloud.storage._signing import generate_signed_url
from google.cloud import storage
client = storage.Client.from_service_account_json('path/to/certificate.json')
expiration = datetime.datetime.now() + datetime.timedelta(days=1)
API_ACCESS_ENDPOINT = 'https://storage.googleapis.com'
canonical_resource = bucketpath + "resource.jpeg"
url = generate_signed_url(
client._credentials, resource=canonical_resource,
api_access_endpoint=API_ACCESS_ENDPOINT,
expiration=expiration, method="PUT",
content_type="jpeg"
)
print(url)
full documentation
https://googleapis.github.io/google-cloud-python/latest/storage/client.html
1
You are the best! Thanks for ending my struggle to find this solution!
– Symon
Jan 4 at 8:00
No problem! A thanks feels really good haha
– Dap
Jan 5 at 2:42
The problem with the approach is that CORS headers aren't included in response no matter what bucket's cors options are. Looking for the solution either the way to sign simple POST url or xml/json url
– Symon
Mar 2 at 10:19
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54022713%2fgoogle-cloud-platform-how-can-i-get-a-signed-url-for-putting-an-object-to-googl%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
I used the google cloud storage library. I recommend it as its supported by google and abstracts some of the complexities in the signed url dance
First get a certificate
https://console.developers.google.com/
Save the certificate to your project
Install google cloud library
pip install google-cloud-storage==1.9.0
Import generate_signed_url and google.storage and then initialize storage client with the certificate and access the bucket
from google.cloud.storage._signing import generate_signed_url
from google.cloud import storage
client = storage.Client.from_service_account_json('path/to/certificate.json')
expiration = datetime.datetime.now() + datetime.timedelta(days=1)
API_ACCESS_ENDPOINT = 'https://storage.googleapis.com'
canonical_resource = bucketpath + "resource.jpeg"
url = generate_signed_url(
client._credentials, resource=canonical_resource,
api_access_endpoint=API_ACCESS_ENDPOINT,
expiration=expiration, method="PUT",
content_type="jpeg"
)
print(url)
full documentation
https://googleapis.github.io/google-cloud-python/latest/storage/client.html
1
You are the best! Thanks for ending my struggle to find this solution!
– Symon
Jan 4 at 8:00
No problem! A thanks feels really good haha
– Dap
Jan 5 at 2:42
The problem with the approach is that CORS headers aren't included in response no matter what bucket's cors options are. Looking for the solution either the way to sign simple POST url or xml/json url
– Symon
Mar 2 at 10:19
add a comment |
I used the google cloud storage library. I recommend it as its supported by google and abstracts some of the complexities in the signed url dance
First get a certificate
https://console.developers.google.com/
Save the certificate to your project
Install google cloud library
pip install google-cloud-storage==1.9.0
Import generate_signed_url and google.storage and then initialize storage client with the certificate and access the bucket
from google.cloud.storage._signing import generate_signed_url
from google.cloud import storage
client = storage.Client.from_service_account_json('path/to/certificate.json')
expiration = datetime.datetime.now() + datetime.timedelta(days=1)
API_ACCESS_ENDPOINT = 'https://storage.googleapis.com'
canonical_resource = bucketpath + "resource.jpeg"
url = generate_signed_url(
client._credentials, resource=canonical_resource,
api_access_endpoint=API_ACCESS_ENDPOINT,
expiration=expiration, method="PUT",
content_type="jpeg"
)
print(url)
full documentation
https://googleapis.github.io/google-cloud-python/latest/storage/client.html
1
You are the best! Thanks for ending my struggle to find this solution!
– Symon
Jan 4 at 8:00
No problem! A thanks feels really good haha
– Dap
Jan 5 at 2:42
The problem with the approach is that CORS headers aren't included in response no matter what bucket's cors options are. Looking for the solution either the way to sign simple POST url or xml/json url
– Symon
Mar 2 at 10:19
add a comment |
I used the google cloud storage library. I recommend it as its supported by google and abstracts some of the complexities in the signed url dance
First get a certificate
https://console.developers.google.com/
Save the certificate to your project
Install google cloud library
pip install google-cloud-storage==1.9.0
Import generate_signed_url and google.storage and then initialize storage client with the certificate and access the bucket
from google.cloud.storage._signing import generate_signed_url
from google.cloud import storage
client = storage.Client.from_service_account_json('path/to/certificate.json')
expiration = datetime.datetime.now() + datetime.timedelta(days=1)
API_ACCESS_ENDPOINT = 'https://storage.googleapis.com'
canonical_resource = bucketpath + "resource.jpeg"
url = generate_signed_url(
client._credentials, resource=canonical_resource,
api_access_endpoint=API_ACCESS_ENDPOINT,
expiration=expiration, method="PUT",
content_type="jpeg"
)
print(url)
full documentation
https://googleapis.github.io/google-cloud-python/latest/storage/client.html
I used the google cloud storage library. I recommend it as its supported by google and abstracts some of the complexities in the signed url dance
First get a certificate
https://console.developers.google.com/
Save the certificate to your project
Install google cloud library
pip install google-cloud-storage==1.9.0
Import generate_signed_url and google.storage and then initialize storage client with the certificate and access the bucket
from google.cloud.storage._signing import generate_signed_url
from google.cloud import storage
client = storage.Client.from_service_account_json('path/to/certificate.json')
expiration = datetime.datetime.now() + datetime.timedelta(days=1)
API_ACCESS_ENDPOINT = 'https://storage.googleapis.com'
canonical_resource = bucketpath + "resource.jpeg"
url = generate_signed_url(
client._credentials, resource=canonical_resource,
api_access_endpoint=API_ACCESS_ENDPOINT,
expiration=expiration, method="PUT",
content_type="jpeg"
)
print(url)
full documentation
https://googleapis.github.io/google-cloud-python/latest/storage/client.html
edited Feb 28 at 11:18
Symon
548816
548816
answered Jan 3 at 21:45
DapDap
1,2212135
1,2212135
1
You are the best! Thanks for ending my struggle to find this solution!
– Symon
Jan 4 at 8:00
No problem! A thanks feels really good haha
– Dap
Jan 5 at 2:42
The problem with the approach is that CORS headers aren't included in response no matter what bucket's cors options are. Looking for the solution either the way to sign simple POST url or xml/json url
– Symon
Mar 2 at 10:19
add a comment |
1
You are the best! Thanks for ending my struggle to find this solution!
– Symon
Jan 4 at 8:00
No problem! A thanks feels really good haha
– Dap
Jan 5 at 2:42
The problem with the approach is that CORS headers aren't included in response no matter what bucket's cors options are. Looking for the solution either the way to sign simple POST url or xml/json url
– Symon
Mar 2 at 10:19
1
1
You are the best! Thanks for ending my struggle to find this solution!
– Symon
Jan 4 at 8:00
You are the best! Thanks for ending my struggle to find this solution!
– Symon
Jan 4 at 8:00
No problem! A thanks feels really good haha
– Dap
Jan 5 at 2:42
No problem! A thanks feels really good haha
– Dap
Jan 5 at 2:42
The problem with the approach is that CORS headers aren't included in response no matter what bucket's cors options are. Looking for the solution either the way to sign simple POST url or xml/json url
– Symon
Mar 2 at 10:19
The problem with the approach is that CORS headers aren't included in response no matter what bucket's cors options are. Looking for the solution either the way to sign simple POST url or xml/json url
– Symon
Mar 2 at 10:19
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54022713%2fgoogle-cloud-platform-how-can-i-get-a-signed-url-for-putting-an-object-to-googl%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown