Hi,

Thanks for the follow up. The articles detail the process fine if the 
underlying blobs are "on" cloud storage. In my case I'm talking about 
legacy blobs stored outside of the my visible buckets. They're not 
represented in cloud storage and the python 3 runtime does not seem to have 
a way to access them from what would be the remaining blobkey references. 
>From my understanding my legacy blobs would not have a corresponding 
"gs_object_name" that would facilitate me accessing them. That is also very 
much moot on the new runtime since it doesn't provide the BlobInfo api 
where I would be able to access the gs_object_name property.

I have a feeling the new "appengine-python-standard" library will provide a 
partial answer as it looks like it will expose some of the old Blobstore 
APIs that I would need to continue to access legacy blobs that are not 
listed in an assessable bucket. 

The new library still seems to be missing the BlobstoreDownloadHandler that 
would allow the end user to be redirected to download the file. This 
basically set a header and the platform would deliver the blob to the 
client.
On Monday, November 8, 2021 at 1:55:41 PM UTC-8 amit...@google.com wrote:

> Hi,
>
> I believe you are referring to this 
> <https://cloud.google.com/appengine/docs/standard/python/blobstore#Serving_a_blob>
>  
> for python 2. While taking a look into this , I have found two stack 
> overflow posts recommending to use Cloud Storage here 
> <https://stackoverflow.com/questions/42002013/replacing-blobstore-upload-handler-with-gcs>
>  
> and here 
> <https://stackoverflow.com/questions/58054966/how-do-i-use-google-app-engine-python-3-blobstore?answertab=votes#tab-top>
>  while 
> using python 3. You can check if any of those fits into your use case.
> On Monday, November 8, 2021 at 12:38:40 PM UTC-5 will....@friesenpress.com 
> wrote:
>
>> I'm slowly moving my way towards a migration path to the new Python 3 
>> runtime. 2022 is the year. I've been a AppEngine customer since 2009 - so 
>> I've already seen my share of smaller migrations as the oldest of the 
>> services died off. 
>>
>> I currently have a question about Blobstore. As I'm planning to decouple 
>> services in preparation for the first of many migrations I'm wondering 
>> about all my old blobs. All my new blobstore files, as of summer of last 
>> year, are in the default cloud storage bucket and I'm keeping track of the 
>> "gs_object_name" 
>> so that they'll continue to be easy to work with as I migrate which is nice.
>>
>> The real question is after I move my apps to the Python3 runtime how will 
>> I access my legacy blobs? I see that cloud NDB "supports" blobkeys and I 
>> currently I'd use "blobstore_handlers.BlobstoreDownloadHandler" and 
>> "send_blob" to allow my users to download their files. I literally have a 
>> decade of stored blobkeys that I would like to be able to service after I 
>> move to the new runtime. I see that "send_bob" puts the blobkey in a header 
>> which I assume is picked up by the platform to deliver the file to the end 
>> user. Please point me in the right direction if you can!
>>
>> On Thursday, November 4, 2021 at 7:47:52 AM UTC-7 Wesley C (Google) wrote:
>>
>>> App Engine and Google Cloud serverless users:
>>>
>>> The App Engine <http://cloud.google.com/appengine> team at Google Cloud 
>>> <http://cloud.google.com> had a flurry of announcements and product 
>>> updates over the past few months. In case you missed them, we've summarized 
>>> them here with relevant links.
>>>
>>>
>>>    - 
>>>    
>>>    New features to better secure your Google App Engine apps 
>>>    
>>> <https://cloud.google.com/blog/products/serverless/app-engine-egress-controls-and-user-managed-service-accounts>
>>>  
>>>    (Aug 2021) —  Introducing a pair of networking and security features:
>>>    - 
>>>       
>>>       Egress Controls for Serverless VPC Access 
>>>       
>>> <https://cloud.google.com/appengine/docs/standard/python3/connecting-vpc#manage>
>>>  
>>>       — consistent app (static) outbound IP address
>>>       - 
>>>       
>>>       User-managed service accounts 
>>>       
>>> <https://cloud.google.com/appengine/docs/standard/python3/user-managed-service-accounts>
>>>  
>>>       — custom service accounts to restrict apps to only the permissions 
>>>       necessary, following the best practice of "least privileges"
>>>       - 
>>>    
>>>    Exploring serverless with a nebulous app 
>>>    
>>> <https://developers.googleblog.com/2021/09/exploring-serverless-with-nebulous-app.html?utm_source=blog&utm_medium=partner&utm_campaign=CDR_wes_aap-serverless_nebserv_sms_201028>
>>>  
>>>    (Sep 2021) — Deploy/shift the same app to App Engine, Cloud 
>>>    Functions, or Cloud Run without any code changes, and show how to access 
>>>    Cloud APIs from serverless
>>>    - 
>>>    
>>>    Extending support for App Engine bundled services 
>>>    
>>> <https://cloud.google.com/blog/products/serverless/support-for-app-engine-services-in-second-generation-runtimes>
>>>  
>>>    (Sep 2021) — Legacy App Engine APIs/bundled services, e.g., Memcache 
>>>    <https://cloud.google.com/appengine/docs/standard/java/memcache>, 
>>>    Datastore 
>>>    <https://cloud.google.com/appengine/docs/standard/java/datastore>, 
>>>    etc., were left out of the next-generation service (to fight against 
>>>    "vendor lock-in" not because they were deprecated). Many matured into 
>>>    standalone products, e.g., Cloud Memorystore 
>>>    <http://cloud.google.com/memorystore>, Cloud Datastore 
>>>    <http://cloud.google.com/datastore>, etc., respectively anyway. To 
>>>    help with updating language versions (e.g., Python 2 to 3, Java 8 to 11, 
>>>    etc.), we've added many of these bundled services "back" to the latest 
>>> App 
>>>    Engine runtimes.
>>>    - 
>>>    
>>>    Modernizing your serverless applications 
>>>    
>>> <https://cloud.google.com/blog/topics/developers-practitioners/modernizing-your-serverless-applications?utm_source=blog&utm_medium=partner&utm_campaign=CDR_wes_aap-serverless_modernizesvls_sms_201003>
>>>  
>>>    (Sep 2021) — Introducing codelabs (hands-on tutorials) and new video 
>>>    series <http://bit.ly/3xk2Swi> to help customers migrate to 
>>>    standalone services to modernize & make their apps more portable 
>>>    (second-generation App Engine, Cloud Functions, Cloud Run; Kubernetes 
>>>    Engine (GKE), Compute Engine VMs; other cloud, multi-cloud, hybrid 
>>> cloud, 
>>>    on-prem, etc.):
>>>    - 
>>>       
>>>       App Engine webapp2 to Flask 
>>>       
>>> <https://developers.googleblog.com/2021/07/migrating-from-app-engine-webapp2-to-flask.html?utm_source=blog&utm_medium=partner&utm_campaign=CDR_wes_aap-serverless_mgrwa2flsk_201008>
>>>       - 
>>>       
>>>       App Engine taskqueue to Cloud Tasks 
>>>       
>>> <https://developers.googleblog.com/2021/10/migrating-app-engine-push-queues-to.html?utm_source=blog&utm_medium=partner&utm_campaign=CDR_wes_aap-serverless_mgrcloudtasks_sms_201112>
>>>  
>>>       (push queues)
>>>       - 
>>>       
>>>       App Engine ndb (Datastore) to Cloud NDB 
>>>       
>>> <http://developers.googleblog.com/2021/07/migrating-from-app-engine-ndb-to-cloud-ndb.html?utm_source=blog&utm_medium=partner&utm_campaign=CDR_wes_aap-serverless_mgrcloudndb_201021>
>>>        
>>>       - 
>>>       
>>>       Cloud NDB to Cloud Datastore 
>>>       
>>> <http://developers.googleblog.com/2021/08/cloud-ndb-to-cloud-datastore-migration.html?utm_source=blog&utm_medium=partner&utm_campaign=CDR_wes_aap-serverless_mgrcloudds_201003>
>>>       - 
>>>       
>>>       App Engine to Cloud Run (with Docker 
>>>       
>>> <https://developers.googleblog.com/2021/08/containerizing-google-app-engine-apps-for-cloud-run.html?utm_source=blog&utm_medium=partner&utm_campaign=CDR_wes_aap-serverless_mgrcrdckr_sms_201017>
>>>  
>>>       or without Docker using Cloud Buildpacks 
>>>       
>>> <https://developers.googleblog.com/2021/09/an-easier-way-to-move-your-app-engine-to-cloud-run.html?utm_source=blog&utm_medium=partner&utm_campaign=CDR_wes_aap-serverless_mgrcrbdpk_sms_201031>
>>>       )
>>>       - 
>>>       
>>>       More are on the way…
>>>       
>>>
>>> While we are working hard to improve your App Engine experience, 
>>> recognize App Engine is no longer the only serverless option available from 
>>> Google Cloud:
>>>
>>>  
>>>
>>>    - 
>>>    
>>>    If you don't have an entire app, have single-function utilities or 
>>>    microservices, Cloud Functions <http://cloud.google.com/functions> 
>>>    is a great alternative; it also supports event-driven workloads
>>>    - 
>>>    
>>>    For those leveraging containerization as part of their app 
>>>    modernization or software development workflows or wish to avoid some of 
>>>    the constraints from App Engine or Cloud Functions, consider Cloud 
>>>    Run <http://cloud.run>.
>>>    
>>>
>>> Both Cloud Functions and Cloud Run have similar execution profiles, are 
>>> pay-per-use, deploy quickly, and autoscale as needed, just like what you're 
>>> used to from App Engine. Providing a more complete serverless product suite 
>>> that meets all your use cases and workloads is one of the goals of the 
>>> Google 
>>> Cloud serverless <http://cloud.google.com/serverless> team.
>>>
>>> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>>> "A computer never does what you want... only what you tell it."
>>>     wesley chun :: @wescpy <http://twitter.com/wescpy> :: Software 
>>> Architect & Engineer
>>>     Developer Advocate at Google 
>>> <https://cloud.google.com/developers/advocates/wesley-chun/> by day; at 
>>> night: Core Python <http://amzn.com/dp/0132269937>
>>>
>>>
-- 


How we’re addressing COVID-19


Health and safety is our top priority. We 
have made arrangements for all staff to work remotely from home to continue 
to provide uninterrupted service, expertise and advice to our authors and 
prospective customers during the unfolding COVID-19 situation. Click here 
for more information <https://www.friesenpress.com/covid-19>.

Connect with 
us at:
 <https://www.friesenpress.com/social>

FriesenPress Mailing Address 
| One Printers Way, Altona, MB, Canada, R0G 0B0
friesenpress.com 
<https://www.friesenpress.com>

You are receiving this email because you 
are a FriesenPress client or partner. This email and any documents attached 
to it may contain confidential information. If you are not the intended 
recipient, you are hereby notified that any disclosure, copying or 
distribution of the contents of this email is prohibited. 

If you no 
longer wish to receive emails from FriesenPress, *please click here to 
unsubscribe.*  <https://books.friesenpress.com/agreement/email/>The privacy 
of your information is important to us. To learn more, visit our *privacy 
policy. <https://www.friesenpress.com/about/privacy-policy/>*

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-appengine+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-appengine/947c88f4-0305-4975-acfe-1e0b6993f856n%40googlegroups.com.

Reply via email to